繁体   English   中英

如何在 Python 中使用类进行 Tkinter GUI 开发

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM