我正在使用Python中的TkInter做一个简单的UI。我想在左上角有一个按钮,所以我做了
back = Button(explorer, text="Back")
back.pack(side="top", anchor="w")
其中explorer
是一个框架,我希望看到左上方的按钮,但它卡在中间。有什么建议么?我已经尝试添加side=TOP
,但没有成功。正确的方法是什么?
答案 0 :(得分:1)
如上所述,您的父框架应填充x空间。 这是父框架未填充x的示例:
import tkinter as tk
root = tk.Tk()
root.geometry('200x200')
element = tk.Frame(root)
element.pack() # No fill
tk.Button(element, text='No Fill').pack(anchor='w')
# To show the fill
tk.Label(root, text='Fill X', bg='green').pack(fill='x')
root.mainloop()
结果是尽管锚点,按钮仍在中间: https://i.stack.imgur.com/DAgmH.png
但是,请进行以下更改:
element.pack(fill='x')
现在您的按钮将在左上方,如下所示: https://i.stack.imgur.com/HoGGj.png
答案 1 :(得分:0)
如果要对齐其子级,则框架必须占据所有水平空间。类似于(如果您使用from tkinter import *
导入了tkinter元素):
explorer.pack(fill=X)
答案 2 :(得分:0)
Tkinter具有3个模块来设置项目: .pack或多或少随机 .grid,您可以在其中定义行和列 .place以像素为单位定义所有内容
所以您可以使用类似的
import tkinter as tk
from tkinter import *
root = Tk()
button = Button(text = 'back')
button.grid(row = 1, column = 1)
root.mainloop()
这显示了如何使用.grid函数。请记住,每个网格的大小由其最大内容定义。如果输入字段较长,则其放置的列将与该输入一样宽。
您还可以使用.place函数,但这需要最多的工作。对我来说,它总是在猜测并重新运行,直到对它感到满意为止。
import tkinter as tk
from tkinter import *
root = Tk()
button = Button(text = 'back')
root.geometry("150x100")
button.place(x=30, y=30)
root.mainloop()
因此,总而言之,如果您不关心,请使用.pack;如果您想要某种控制,请使用.grid;如果您希望准确,请使用.place。请记住,一次只能使用一个。