将几何网格应用于 tkinter Notebook 页面中的小部件的问题
Posted
技术标签:
【中文标题】将几何网格应用于 tkinter Notebook 页面中的小部件的问题【英文标题】:Issue in applying geometry grid to widgets in tkinter Notebook pages 【发布时间】:2017-08-13 13:37:45 【问题描述】:您能否看一下这个演示并告诉我为什么我无法将几何网格设置应用于笔记本选项卡小部件:
如你所见,我在 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()
这是我希望达到的目标
【问题讨论】:
您希望它在哪里?另外,错误不是告诉您确切的问题是什么吗? 在页面的左上角 我只是用我希望得到的图像更新帖子 【参考方案1】:试试
lbl.pack(side=left)
和
cm.pack(side=left)
应该把两个小部件都放在左边
【讨论】:
感谢 H.Lunn,但我收到此错误:NameError: name 'left' is not defined
此外,如果我在下一行中有一系列小部件怎么办!?
必须是"left"
,一个字符串。如前所述,除非您定义了一个名为 left
的变量,否则此代码将失败。【参考方案2】:
您不能同时使用多个几何管理器。
好吧,我看到的答案说明了同样的事情,但实际上,如果您不滥用它们,您可以。这就是您的情况:您使用了多个几何管理器,但使用了错误的方式。
你有两个选择:
选项 1:作为note
,您想为tab1
小部件使用pack()
几何管理器。这意味着您必须删除以下 2 行:
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()
【讨论】:
谢谢 Billal ,我想我必须选择选项二,但是当我删除你提到的行时,运行应用程序后没有显示 GUI。我也没有收到任何错误! 真的吗?这很奇怪。我可以向您展示 2 个选项的屏幕截图。我在 Ubuntu 上运行你的代码。以上是关于将几何网格应用于 tkinter Notebook 页面中的小部件的问题的主要内容,如果未能解决你的问题,请参考以下文章
Python Chapter 9: 使用Tkinter进行GUI程序设计 Part 2