首页 文章

将几何网格应用于tkinter Notebook页面中的窗口小部件时出现问题

提问于
浏览
2

您能否看看这个演示,让我知道为什么我无法将几何网格设置应用于Notebook Tab小部件:

如你所见,我在 lb1 上尝试了这个

lb1.grid(row = 1,column = 1,sticky ='W',padx = 5,pady = 5,ipadx = 5,ipady = 5)

但标签仍然位于标签页的中间

import Tkinter
from Tkinter import *
import ttk
from ttk import *

app = Tk()
app.configure(background='DimGray')
app.geometry('600x600')
app.resizable(width=False, height=False)

note = Notebook(app)

tab1 = Frame(note)
tab2 = Frame(note)
tab3 = Frame(note)

note.add(tab1, text = "Tracing", compound=TOP)
note.add(tab2, text = "Network Details")
note.add(tab3, text = "Tab Three")
note.pack(fill=BOTH, expand=True)

lb1 = Label(tab1,  text="Trace Object")
lb1.grid(row=1, column=1, sticky='E', padx=5, pady=5, ipadx=5, ipady=5)
lb1.pack()

variable = StringVar(app)
variable.set("Select From List")

cm = ttk.Combobox(tab1, textvariable=variable)
cm.config(values =('Select From Phase A', 'Select From Phase B'))
cm.grid(row=1, column=2, sticky='E', padx=5, pady=5, ipadx=5, ipady=5)
cm.pack()

app.mainloop()

这就是我希望实现的目标

enter image description here

2 回答

  • 1

    尝试

    lbl.pack(side=left)
    

    cm.pack(side=left)
    

    这应该把两个小部件放在左边

  • 3

    您不能同时使用多个几何管理器 .

    好吧,我看到答案说明了同样的事情,但实际上如果你不滥用它们就可以 . 这就是你的情况:你使用多个几何管理器,但方式错误 .

    您有两种选择:

    • 选项1:

    作为fir note ,您希望将 pack() 几何管理器用于 tab1 小部件 . 这意味着您必须删除这两行:

    lb1.grid(row=1, column=1, sticky='E', padx=5, pady=5, ipadx=5, ipady=5)
    

    和:

    cm.grid(row=1, column=2, sticky='E', padx=5, pady=5, ipadx=5, ipady=5)
    
    • 选项2:

    您希望将 pack() 几何管理器用于 note 小部件,但是您要将 grid() 用于 tab1 . 您可以安全地执行此操作,而不会混淆Python解释器,删除这两行并保留上面提到的前一行:

    lb1.pack()
    

    和:

    cm.pack()
    

相关问题