如何使用 Tkinter 和 Python2.7 控制帧大小?
How to control frame size with Tkinter and Python2.7?
我希望默认情况下有更大的帧大小,但这段代码不能那样工作。我做错了什么?
from Tkinter import *
class App:
def __init__(self, master):
frame = Frame(master, width=600, height=450)
frame.grid()
frame.pack_propagate(0) # tell frame not to let its children control its size
self.label_file = Label(frame, text="Enter CSV file:")
self.label_encode = Label(frame, text="Enter encoding:")
self.entry_file = Entry(frame)
self.entry_encode = Entry(frame)
self.label_file.grid(row=0, sticky=E)
self.label_encode.grid(row=1, sticky=E)
self.entry_file.grid(row=0, column=1)
self.entry_encode.grid(row=1, column=1)
root = Tk()
root.wm_title("Top list")
app = App(root)
root.mainloop()
您正在调用 pack_propagate
,但随后使用 grid
实际布置小部件。如果您使用 grid
,则必须调用 grid_propagate
。
我敦促你抵制这样做的诱惑。 Tkinter 程序在打开几何传播的情况下表现得更好。如果您正在尝试解决某些特定的布局问题,可能有比关闭传播更好的解决方法。
我使用 tkinter 已经二十多年了,我需要关闭几何传播的次数我可能一只手就能数过来,剩下的手指。
我希望默认情况下有更大的帧大小,但这段代码不能那样工作。我做错了什么?
from Tkinter import *
class App:
def __init__(self, master):
frame = Frame(master, width=600, height=450)
frame.grid()
frame.pack_propagate(0) # tell frame not to let its children control its size
self.label_file = Label(frame, text="Enter CSV file:")
self.label_encode = Label(frame, text="Enter encoding:")
self.entry_file = Entry(frame)
self.entry_encode = Entry(frame)
self.label_file.grid(row=0, sticky=E)
self.label_encode.grid(row=1, sticky=E)
self.entry_file.grid(row=0, column=1)
self.entry_encode.grid(row=1, column=1)
root = Tk()
root.wm_title("Top list")
app = App(root)
root.mainloop()
您正在调用 pack_propagate
,但随后使用 grid
实际布置小部件。如果您使用 grid
,则必须调用 grid_propagate
。
我敦促你抵制这样做的诱惑。 Tkinter 程序在打开几何传播的情况下表现得更好。如果您正在尝试解决某些特定的布局问题,可能有比关闭传播更好的解决方法。
我使用 tkinter 已经二十多年了,我需要关闭几何传播的次数我可能一只手就能数过来,剩下的手指。