首页 > 解决方案 > 为什么我的按钮没有转到 GUI 窗口的最右侧?

问题描述

我的按钮上的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()

在此处输入图像描述

标签: pythontkinter

解决方案


正如 Novel 所提到的,空列的宽度为 0,因此您column=8的效果与column=2, 和column=500as相同column=3。当然,您的第 0 列的宽度为零。正如 Novel 所建议的那样,您可以使用.pack而不是.grid,但不要将其混合.pack.grid同一个容器小部件中,在这种情况下,它是根窗口。但是,您可以通过 arg 实现您想要的,但您还需要为包含Button.grid sticky的列设置列权重。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参数。有关详细信息,请参阅Pack 文档


推荐阅读