【发布时间】:2021-11-23 21:53:49
【问题描述】:
我正在尝试为公司的在线租赁设备创建 GUI。它应该有一个带有标题和 5 个按钮的起始页面,用于各种类别的租赁。用户单击一个按钮,将打开一个新页面,其中包含标题、文本正文和一个复选框以创建订单。 我目前面临的问题是如何让按钮生成一个我可以编辑的独特页面。它目前会创建一个新窗口,但我不确定如何向其中添加文本? 我几乎是一个完全的新手,所以请记住这一点。 代码如下:
from tkinter import *
Window = Tk()
def Open():
New_Window = Tk()
lbl = Label(New_Window, text="Water Damage Equipment")
New_Window.mainloop()
# buttons for rental options
Btn1 = Button(text="Extractors/Cleaners", command=Open)
Btn1.pack()
Btn1 = Button(text="Air Movers/Fans", command=Open)
Btn1.pack()
Btn1 = Button(text="Dehumidifers", command=Open)
Btn1.pack()
Btn1 = Button(text="Air Filtration", command=Open)
Btn1.pack()
Btn1 = Button(text="Generators", command=Open)
Btn1.pack()
Window.mainloop()
root = Tk()
def command():
Toplevel(root)
button = Button(root, text="4 Dry Out e-Rental", command=command)
button.pack()
root.mainloop()
【问题讨论】:
-
您似乎在使用第三方模块 (
breezypythongui) 来做事,所以我建议您研究它的文档和其中的任何示例来回答您自己的问题。 -
从它的文档中我不认为
breezypythongui支持多个窗口,因为它的addButton()、addLabel()等...方法没有指定哪个窗口或Frame是它们的参数“大师”就像他们的tkinter同行一样。您似乎还试图为每个窗口创建一个单独的Tk实例,虽然这是可能的,但它也是有问题的 - 请参阅 Why are multiple instances of Tk discouraged?。 IMO 更好的方法是创建单独的Toplevel小部件。 -
这里有一个关于
Toplevel小部件的小文档。 -
我查看了
breezypythongui源代码,不容易修改它以支持多个窗口。如果您想避免直接学习如何使用tkinter,因为您觉得它太复杂或文档记录太差,我知道还有一个基于它的简化模块,由 John Zelle 教授命名为graphics.py,确实如此 支持多个窗口并且有文档——如果你感兴趣的话,甚至还有一本书。您可以在此站点上搜索标记为“[zelle-graphics]”的问题,以了解其使用方式。 -
@martineau 自从我阅读您的评论以来,我一直在研究 Tkinter 和 Toplevel 小部件——感谢您提及它们。我知道它非常受欢迎,因此学习很有价值,并且相信我将能够通过一些参考和阅读更多教程/示例来重写程序。在使用 Tkinter/Toplevel 开发这个程序时,您有什么建议吗?
标签: python user-interface tkinter button window