python tkinter问题在调整窗口大小时更改小部件数量

问题描述

我正在编写一个显示小部件网格的程序。当窗口水平调整大小时,小部件会调整大小,但是当窗口垂直调整大小时,我希望小部件的高度保持不变,但行数要更改。我没有frame.bind(“”,configure)的运气,窗口不会调整大小。 root.after(1000,rsz)可以工作,但是如果我使延迟小得多,它就没有作用。似乎应该有一个更好的方法来执行此操作。有什么建议吗?

import tkinter as tk
from tkinter import ttk
#def configure(event):
#    if not event.widget.master.master:
#        rsz()
root=tk.Tk()
root.geometry("500x500")
root.grid_columnconfigure(0,weight=1)
root.grid_rowconfigure(0,weight=1)
def rsz():
    global lasth
    h = root.winfo_height()
    if h != lasth:
        for widget in frame.winfo_children():
            widget.destroy()
        for row in range(int((h)/26)):
            frame.grid_rowconfigure(row,weight=0)
            for col in range(6):
                frame.grid_columnconfigure(col,weight=1)
                ttk.Button(frame,text='row{},col{}'.format(row,col)).grid(row=row,column=col,sticky='EWNS')
        lasth = h
    root.after(1000,rsz)
frame=tk.Frame(root,padx=5,pady=5)
frame.grid(row=0,column=0,sticky="NSEW")
lasth = -1
rsz()
#frame.bind("<Configure>",configure)
root.mainloop()

解决方法

file_list = glob.glob(os.path.join(root,invoice_dir_name,"*.(pdf|PDF)")) 应该可以与rsz()一起正常工作:

frame.bind('<Configure>')