我正在尝试在tkinter中调整框架的大小,但宽度不会更改,并且函数winfo_width()返回1。我该如何解决?
from tkinter import *
root = Tk()
root.geometry('400x300')
Frame = LabelFrame(root, text="Test", width = 200)
Frame.grid(row = 0, column = 0)
label = Label(Frame, text = '').grid(row = 0, column=0)
print(Frame.winfo_width()) #output is 1 instead of 200
root.mainloop()
正如其他人指出的那样,grid_propagate()
我将向您展示如何设置框架以自动调整尺寸,以设置静态尺寸的框架。
您需要告诉行和列以扩展框架所在的位置。这是通过columnconfigure()
和来完成的rowconfigure()
。然后,您需要使用来告诉框架要坚持到所有侧面sticky='nsew'
。向框架添加小部件与其他任何容器都没有不同。只需告诉窗口小部件在框架中即可。
我看到的一个潜在问题是您Frame()
在此行覆盖:Frame = LabelFrame(root, text="Test", width = 200)
。这是一个很好的示例,为什么您不应该使用import *
。而是对import tkinter as tk
需要的tk.
前缀使用前缀。
例:
import tkinter as tk
root = tk.Tk()
root.geometry('400x300')
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
frame = tk.LabelFrame(root, text='Test', width=200)
frame.grid(row=0, column=0, sticky='nsew')
label = tk.Label(frame, text='label').grid(row=0, column=0)
root.mainloop()
结果:
更新:
如果确实需要静态的东西,请确保同时定义高度和宽度。如果仅定义一个或另一个,则不会在窗口中看到该框架。
有关静态帧大小的可测试示例:
import tkinter as tk
root = tk.Tk()
root.geometry('400x300')
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
frame = tk.LabelFrame(root, text='Test', height=200, width=200)
frame.grid(row=0, column=0)
frame.grid_propagate(False)
label = tk.Label(frame, text='label').grid(row=0, column=0)
root.mainloop()
结果:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句