[英]How to use classes for Tkinter GUI development in Python
我的目标是创建一个创建表单的类,然后使用它的方法创建各种小部件,就这么简单。 问题是,在某些情况下,我不知道如何将小部件句柄(或链接到特定小部件的任何内容)传递给不同的方法。 例如,这是我之前写的:
import tkinter
class CreateForm (tkinter.Tk):
def __init__(self, form_title, form_icon, form_width, form_height):
super().__init__()
self.eval('tk::PlaceWindow . center')
self.geometry(f'{form_width}x{form_height}')
self.title(form_title)
self.iconbitmap(form_icon)
def start(self):
self.mainloop()
def CreateLabel(self, master, txt, lbl_x, lbl_y):
tkinter.Label(master=master, text=txt).place(x=lbl_x, y=lbl_y)
def btn_click(self):
print('button has been clicked')
def CreateButton(self, master, txt, btn_x, btn_y):
tkinter.Button(master=master, text=txt, command=self.btn_click).place(x=btn_x, y=btn_y)
这里我只是简单地尝试创建一个表单,然后在表单中添加一个标签和一个按钮。 通过单击该按钮,将调用名为“btn_click”的函数。 但是,我不想打印“Hello World”,而是希望该功能打印出我的标签具有的任何文本。 这就是我的困惑所在,我不知道如何将标签句柄传递给这个函数。 如果您能帮我解决这个问题,我将不胜感激,此外,如果你们对如何改进我的班级结构有任何建议,因为我的最终目标是创建一个可以轻松复制和粘贴用于其他 tkinter 相关项目的班级.
def CreateLabel(self, master, txt, lbl_x, lbl_y):
self.l = tkinter.Label(master=master, text=txt).place(x=lbl_x, y=lbl_y)
def btn_click(self):
print(self.l.cget("text"))
见tkinter.Widget.cget()
https://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Widget
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.