如何在TkInter的左侧放置一个按钮

时间:2019-10-24 18:28:59

标签: python user-interface tkinter

我正在使用Python中的TkInter做一个简单的UI。我想在左上角有一个按钮,所以我做了

    back = Button(explorer, text="Back")
    back.pack(side="top", anchor="w")

其中explorer是一个框架,我希望看到左上方的按钮,但它卡在中间。有什么建议么?我已经尝试添加side=TOP,但没有成功。正确的方法是什么?

3 个答案:

答案 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。请记住,一次只能使用一个。