python - 为什么我的按钮没有转到 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()
解决方案
正如 Novel 所提到的,空列的宽度为 0,因此您column=8
的效果与column=2
, 和column=500
as相同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 文档。
推荐阅读
- javascript - 我想用 math.random 获得 0.00 - 20.00 之间的数字,但似乎无法让它工作
- arrays - RTTY 翻译,多行
- javascript - 如何控制http post的时间
- amazon-web-services - AWS 中的 Kubernetes 入口
- java - java异常 - 为什么它会捕获?
- php - 使用来自 mySQL 的数据填充 HTML DIV
- python - subprocess.Popen 调用带参数的程序
- node.js - 我希望我的机器人删除包含关键字或包含类似字符的消息
- ruby-on-rails - 从 Rails 发送 CSRF 令牌到 React SPA
- python - python获取网站的html代码无需等待获取所有代码