【发布时间】:2021-10-01 11:57:07
【问题描述】:
我无法弄清楚为什么使用“.place”时小部件不可见。它在使用“.pack”时起作用。我的 GUI 需要精确定位小部件,因此我需要使用“.place”。我做错了什么吗?
环境:Python:3.9.6 Windows 10 (21H1)
import tkinter as objTK
from tkinter import ttk as objTTK
root = objTK.Tk()
root.title("Tab Widget")
tabControl = objTTK.Notebook(root)
objSummaryTab = objTTK.Frame(tabControl)
objSettingsTab = objTTK.Frame(tabControl)
tabControl.add(objSummaryTab, text ='Summary')
tabControl.add(objSettingsTab, text ='Settings')
lb1 = objTTK.Label(objSummaryTab, text ="Summary")
lb1.place(x=5, y=5)
lb2 = objTTK.Label(objSettingsTab, text ="Settings")
lb2.place(x=5, y=5)
tabControl.place(x=5, y=5)
root.bind("<Escape>", lambda _: root.destroy())
root.geometry("500x500")
root.mainloop()
【问题讨论】:
-
“我的 GUI 需要精确定位小部件” - 为什么?非常非常少的 UI 有这样的限制。
-
我的 GUI 包含紧凑的小部件。即使是轻微的错位看起来也很尴尬。我尝试过 .pack 和 .grid 一次,但并不满意。因此,我坚持使用 .place。也许我已经使用 python 几个月了,所以我还没有对它们进行太多探索。
-
@SandeepSD:如果您正确使用
.pack()或.grid(),它们应该进行调整以使小部件相互配合;也就是说,没有重叠。您可以使用tkinter.PanedWindow使窗口的各个部分可调整大小,这样如果小部件的某些部分(如长标签)不在视野范围内,仍然可以访问它们。
标签: python-3.x tkinter