2024-09-22 16:36:40 发布
网友
我有一个tkinter框架,我想在Y轴上自动调整大小,但是在添加标签部件时保持恒定的宽度。在
为了保持X大小不变,我使用了grid_propogate(False),但这使整个东西的大小保持不变。在
grid_propogate(False)
如何设置框架以这种方式调整大小?在
谢谢
对我来说,这似乎是一个非常难看的解决方案(希望有人能提出更好的解决方案):
import Tkinter as tk root=tk.Tk() f=tk.Frame(root,width=100,height=300) f.grid_propagate(False) f.grid(row=0,column=0) def resize(evt): f.update_idletasks() height=f.winfo_reqheight() f.grid_propagate(False) if(evt.width!=100) or (evt.height!=height): f.configure(width=100,height=height) print "HERE", evt.width,height f.bind('<Configure>',resize) #Just some stupid (ugly) code to update the size of the widget at runtime. def add_label(): f.grid_propagate(True) lbl=tk.Label(f,text=' %d Hello!'%(add_label.row)) lbl.grid(column=0,row=add_label.row) add_label.row+=1 add_label.row=0 b=tk.Button(root,text="Add label",command=add_label) b.grid(row=1,column=0) root.mainloop()
好吧,算了
制作了一个更大的框架,它包含了我的框架在最大化时可以填充的空间,并使用pack(fill=X)和{}使内部框架符合外部框架的X维度,而不改变它。然后我可以根据需要在内框上添加线条,使其保持X大小:
pack(fill=X
OuterFrame = Frame(root, height=500, width=400) InnerFrame = Frame(OuterFrame, borderwidth=3, relief=RAISED) InnerFrame.pack(side=TOP, fill=X) # stuff that goes in the y-resizing InnerFrame OuterFrame.pack_propogate(False) OuterFrame.pack()
对我来说,这似乎是一个非常难看的解决方案(希望有人能提出更好的解决方案):
好吧,算了
制作了一个更大的框架,它包含了我的框架在最大化时可以填充的空间,并使用}使内部框架符合外部框架的X维度,而不改变它。然后我可以根据需要在内框上添加线条,使其保持X大小:
pack(fill=X
)和{相关问题 更多 >
编程相关推荐