当前位置: 首页 > 知识库问答 >
问题:

在TKINTER中,有没有一种方法将标签和输入框都居中放置在特定的行上?

松琦
2023-03-14

我正在尝试用Python(Tkinter)设计一个屏幕,在彻底研究了这个问题之后,我无法找到一种方法将标签和输入框都集中在屏幕上我想要的行中。明确地说,我不希望它位于屏幕的中央,而希望它位于我所选择的行的中央。

我已经尝试了一些。pack()的方法和使用网格来实现,但似乎没有什么能达到我想要的效果。

我这样设置根:

root = tk.Tk()

我这样设置GUI的宽度和高度:

screen_width = str(root.winfo_screenwidth())
screen_height = str(root.winfo_screenheight())
root.geometry(screen_width + "x" + screen_height)

null

fName = tk.Label(root, text="First Name")
fName.grid(row=0)
lName = tk.Label(root, text="Last Name")
lName.grid(row=1)
ageLabel = tk.Label(root, text="Age")
ageLabel.grid(row=2)
correctedLabel = tk.Label(root, text="Is your vision, or corrected to, 20/20? (Y/N)")
correctedLabel.grid(row=3)
genderLabel = tk.Label(root, text="Gender")
genderLabel.grid(row=4)

e1 = tk.Entry(root)
e2 = tk.Entry(root)
e3 = tk.Entry(root)
e4 = tk.Entry(root)
e5 = tk.Entry(root)
root.winfo_toplevel().title("Information Collection")


e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=2, column=1)
e4.grid(row=3, column=1)
e5.grid(row=4, column=1)

null

共有1个答案

苍温文
2023-03-14

您可以从设置 开始,该 调整每个行/列应该占用的权重:

root.grid_columnconfigure(0,weight=1)
root.grid_columnconfigure(1,weight=1)

现在您应该看到左/右两个标签均匀地分布在您的屏幕上,这是您想要的。如果您想使它们正确居中,可以对小部件应用 方向。

fName.grid(row=0,sticky="e")
...
e1.grid(row=0, column=1,sticky="w")
...

完整样品:

import tkinter as tk

root = tk.Tk()
root.title("Information Collection")
root.geometry(f"{root.winfo_screenwidth()}x{root.winfo_screenheight()}")

labels = ("First Name","Last Name","Age","Is your vision, or corrected to, 20/20? (Y/N)","Gender")
entries = []
for num, i in enumerate(labels):
    l = tk.Label(root, text=i)
    l.grid(row=num, column=0, sticky="e") #remove sticky if not required
    e = tk.Entry(root)
    e.grid(row=num, column=1, sticky="w") #remove sticky if not required
    entries.append(e) #keep the entries in a list so you can retrieve the values later

root.grid_columnconfigure(0,weight=1)
root.grid_columnconfigure(1,weight=1)

root.mainloop()
 类似资料:
  • 我知道一个测试可以通过运行来运行,在sbt中, 有没有办法告诉sbt/scalatest在没有标签的情况下运行单个测试?例如: 这意味着“在类中运行第二个测试。不管它是什么”。我们有一堆测试,没有人费心去标记它们,那么有没有办法在没有标签的情况下运行单个测试?

  • 只是想知道在Android Studio中输入文本字段时,是否有一种方法可以自动在屏幕上显示文本? 例如,如果我输入一个数字,它会自动乘以20,结果显示在文本字段下方的屏幕上。

  • 因此,我试图找到一些关于如何在标记上居中地图的文档,但不知怎么的,它对我不起作用。 在Gmap3页面上的示例中,如果不将“中心”添加到地图选项中,它也可以正常工作,对我来说,即使使用“中心: latLng”也不行。 所以我尝试了一些不同的组合没有什么真的适合我... 然后我试着分别提取纬度和经度,并检查了我在一个允许输入lat和lng的网站上得到的数字,我意识到这些曲线不是标记的,所以我不知道我提

  • 问题内容: 我希望用户输入时间,例如12:00,但是我需要弄清楚一些事情,我实在是太可惜了。 我可以将文字限制为5个字符吗? 我可以在代码中嵌入冒号,以便用户无法删除它吗? 最后,我可以接受该代码并验证它只是数字(当然忽略了冒号) 问题答案: 答案是使用JFormattedTextField和MaskFormatter。 例如: Java编译器将要求您在创建MaskFormatter时捕获或抛出P

  • 我一直在尝试制作这样的GUI: 然而,我遇到的困难是,我需要使按钮的文本可变-每个按钮应该提供不同的选项,可以在文本长度上有所不同。虽然这本身并不困难,但我尝试了无数不同的方法,但我无法让按钮居中,尽管它们的文本长度。无论我尝试什么,我总是有以下问题之一: 按钮不居中(左边有空间,但它们超过了右边的窗口) 由于某种原因,问题和Goodratio根据按钮大小更改位置 我不知道该怎么做。有没有人对做这

  • 我需要向用户显示以下座位并能够预订和取消预订。 我也尝试了unordered_map,但无论我做什么,我都无法使map以我想要的方式显示座位(1A,1B,1C,1D,1E)。 1A 1B 1C 1D 1E 2A 2B 2C 2D 2E... 尝试将座位名称更改为A1 B1 C1 D1...显然,我是C++新手。我知道地图是有序的,并且我知道使用unordered_map无法保证地图的显示方式。 我