我试图用tkinter在python中创建一些UI。
这是我使用的代码示例:
root = Tk()
root.geometry("1000x700x0x0")
canvas = Canvas(root, width = 700, height = 700, bg ='white').grid(row = 0, column = 0)
button1 = Button(root, text = "w/e", command = w/e).grid(row = 0, column = 1)
button2 = Button(root, text = "w/e", command = w/e).grid(row = 1, column = 1)
有关如何做的任何帮助?
谢谢!
答案 0 :(得分:3)
由于您的GUI似乎有两个逻辑组的小部件,我会这样组织它。首先将画布放在左侧,将框架放在右侧。您可以使用pack
,place
,grid
或指定窗口来管理它们。对于从左到右的方向,由于其简单性,pack
是一个不错的选择
请注意,您不必这样做,但经验告诉我,它使布局问题更容易解决。
在下面的示例中,我为按钮框架expand
设置为False
,这意味着当用户调整大小时,画布将增大和缩小(因为它具有expand=True
),但是按钮只会占用他们需要的空间。
canvas = Canvas(root, ...)
buttonframe = Frame(root, ...)
canvas.pack(side="left", fill="both", expand=True)
buttonframe.pack(side="right", fill="both", expand=False)
接下来,您可以将所有按钮放在右侧,而不必担心它们的位置可能会影响左侧的对象。
使用grid
时要记住的重要一点是,您应该指定至少一行和至少一列给予任何额外空间。这可以是包含小部件的行和/或列,也可以是边上的空行和列。
button1 = Button(buttonframe, ...)
button2 = Button(buttonframe, ...)
button3 = Button(buttonframe, ...)
...
button1.grid(row=0, column=0)
button2.grid(row=0, column=1)
button3.grid(row=1, column=0)
...
buttonframe.grid_rowconfigure(100, weight=1)
buttonframe.grid_columnconfigure(2, weight=1)
注意:如果您需要保留对窗口小部件的引用,则必须创建窗口小部件并在两个单独的行上调用grid
(或pack
或place
)。这是因为Button(...).grid(...)
返回上一次函数调用的值,grid(...)
返回None