首页 > 解决方案 > Python 3:按钮的位置和文本框中的输入文本

问题描述

我是 python 新手,正在学习创建一个包含两个条目和一个按钮的文本框。

我可以设置两个条目的位置,但我无法设置它们下方按钮的位置。

我尝试使用:

b.place(anchor=S, bordermode=OUTSIDE, height=5, width=10)

但按钮根本不动。它停留在右下角。

以下是我的代码:

from tkinter import *
root = Tk()

l1 = Label(root, text="Variable_1")
l1.pack( side = LEFT)
e1 = Entry(root, bd = 5)
e1.pack(side = LEFT)

l2 = Label(root, text="Variable_2")
l2.pack( side = LEFT)
e2 = Entry(root, bd = 5)
e2.pack(side = LEFT)

l = Label(root)
def callback():
    x = e1.get()
    y = e2.get()
    print(x)
    print(y)

b = Button(root, text="OK", command=callback)

for widget in (e1, e2, l, b):
    widget.pack()

如何将按钮放在文本框的底部中心?

另外,有什么建议可以改变条目的位置吗?

谢谢!

标签: python-3.xtkinter

解决方案


构建复杂布局的常用方法是将关联的小部件与框架组合在一起。在下面的示例中,我将条目分组在一帧中,将按钮分组在另一帧中。这使得更容易控制垂直定位。

from tkinter import *
root = Tk()

top = Frame(root)   # Create frame to hold entrys
top.pack()          # Pack top frame
l1 = Label(top, text="Variable_1")
l1.pack(side=LEFT)
e1 = Entry(top, bd=5)
e1.pack(side=LEFT)

l2 = Label(top, text="Variable_2")
l2.pack(side=LEFT)
e2 = Entry(top, bd=5)
e2.pack(side=LEFT)

l = Label(root)
def callback():
    x = e1.get()
    y = e2.get()
    print(x)
    print(y)

bottom = Frame(root)    # Create frame to hold button
bottom.pack()           # Pack bottom frame
b = Button(bottom, text="OK", command=callback)
b.pack()

您还可以使用grid()几何管理器。请参阅Tkinter 网格几何管理器


推荐阅读