本帖最后由 cqwcns 于 2022-3-24 11:52 编辑
以下Demo中,我创建了一个函数change_attribute来修改控件的属性,传参3个,分别是控件名、属性名、值。
以下代码,已经实现属性名、值的灵活调用。问题在于控件名不知道如何写如表达式。
请指教,谢谢。
[Python] 纯文本查看 复制代码 from tkinter import *
from tkinter.ttk import *
class start_gui(Tk):
def __init__(self, parent):
self.parent = parent
def set_window(self):
w = self.parent
# 创建内容容器
content = Frame(w, padding=(30, 20, 30, 20))
content.grid(column=0, row=0, sticky=(N, S, E, W))
# 创建label
self.lab1 = Label(content, text='文本')
self.lab1.grid(column=0, row=0)
btn1 = Button(content, text='修改',
command=lambda: self.change_attribute('lab1', 'text', '新值1'))
btn1.grid(column=1, row=0)
self.lab2 = Label(content, text='文本2')
self.lab2.grid(column=0, row=1)
btn2 = Button(content, text='修改',
command=lambda: self.change_attribute('lab2', 'text', '新值2'))
btn2.grid(column=1, row=1)
def change_attribute(self, widget, attr, val):
print(widget)
print(attr)
print(val)
# 问题在这里
self.lab1[attr] = val
# 尝试这样报错
# self[widget][attr] = val
def action():
root = Tk()
window = start_gui(root)
window.set_window()
root.mainloop()
if __name__ == '__main__':
action()
|