首页 > 解决方案 > Python Tkinter Notebook 使用“.place”定位小部件

问题描述

我无法弄清楚为什么使用“.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()

标签: python-3.xtkinter

解决方案


这个错误是因为place()不会自动调整小部件的大小,like pack()and grid()do。例如,您需要为:指定widthheight参数。在这种情况下,和以像素为单位。tabControltabControl = objTTK.Notebook(root, width=100, height=100)widthheight


推荐阅读