为什么我的按钮没有转到GUI窗口的最右边?

时间:2018-08-02 19:27:33

标签: python tkinter

我的按钮上的column值设置为500,但该按钮似乎并没有向右移动那么远。

这是我的代码:

from tkinter import *

root = Tk()
root.geometry("500x500")

logo = Label(root,text = "New File Finder")
new_folder = Button(text = "browse new folder")
old_folder = Button(text = "browse old folder")

logo.grid(row=0, column=8)
new_folder.grid(row=1,column=1)
old_folder.grid(row=1,column=500)

root.mainloop()

enter image description here

1 个答案:

答案 0 :(得分:2)

就像Novel提到的那样,空列的宽度为0,因此您的column=8column=2的作用相同,而column=500column=3的作用相同。当然,您的列0的宽度为零。正如Novel建议的那样,您可以使用.pack代替.grid,但不要将.pack.grid混入同一个容器窗口小部件中,在这种情况下,它是根窗口。但是,您可以通过.grid sticky arg实现所需的功能,但是还需要为包含old_folder按钮的列设置列权重。例如:

import tkinter as tk

root = tk.Tk()
root.geometry("500x500")
root.columnconfigure(2, weight=1)

logo = tk.Label(root, text="New File Finder")
new_folder = tk.Button(root, text="browse new folder")
old_folder = tk.Button(root, text="browse old folder")

logo.grid(row=0, column=1)
new_folder.grid(row=1,column=0)
old_folder.grid(row=1,column=2, sticky="e")

root.mainloop()

我还更改了“星号”导入,因为这会将130个Tkinter名称转储到您的名称空间中,这很麻烦,浪费空间,并且可能导致名称冲突,尤其是如果您进行其他星号导入。


正如Bryan提到的,.pack(side=RIGHT)实际上并没有将窗口小部件强制到容器的右侧,它只是告诉.pack将窗口小部件打包到该侧。因此,如果您用.pack(side=RIGHT)打包了一堆小部件,它们将从右到左打包,而不是从默认的上到下打包。您可以使用anchor arg来精确控制要放置在小部件分配空间内的位置。还要看看各种pad参数。有关详细信息,请参见the Pack docs