Python 为什么我的按钮不在GUI窗口的最右边?

Python 为什么我的按钮不在GUI窗口的最右边?,python,tkinter,Python,Tkinter,我的按钮上的列值设置为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(

我的按钮上的
值设置为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()

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

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)
打包一组小部件,它们将从右到左打包,而不是从默认的从上到下打包。您可以使用
锚定
arg精确地控制小部件分配空间中希望小部件放置的位置。还可以查看各种
pad
args。有关详细信息,请参阅。

空列的宽度为0(默认情况下),因此输入多少并不重要。用
pack(side=RIGHT)
把东西放在右边。@Novel:小心你的术语。它不会把它放在窗口的右边,它会把它放在任何可用空间的右边,这很可能不是窗口的右边。看看我的答案。我将详细介绍网格管理器的行为。