这是我的第一个tkinter/gui项目。我设置了一个mvc模式,并为我的应用程序的每个窗口设置了一个视图类。
主窗口的一个示例:
class ViewMain(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master, height = 300, width = 500)
self.pack(fill='both', expand=True)
self.BUTTON_SIZE = {'relheight' : 0.3, 'relwidth' : 0.35}
self._set_widgets()
self._set_layout()
def _set_widgets(self):
self.button = tk.Button(self, text = 'Text')
def _set_layout(self):
self.button.place(relx = 0.1, rely = 0.15, **self.BUTTON_SIZE)目前,我有6个视图类,我想改变按钮的凹槽浮雕。由于我有30+按钮,所以我一直在寻找一种不编写以下内容的方法:
self.button = tk.Button(self, text = 'Text', relief = 'groove')正如您所看到的,我思路中的一个缺陷是,我已经在使用重复的方法来配置按钮的大小。但让我们忽略这一点。
由于我对所有这些都相当陌生,我看到了三种方法:
’”作为选项,使用ttk.Button并配置样式。但是,每次创建按钮时,我都必须为每个视图类添加样式,
最后一种选择使我想到了这一点:
class CustomButton(tk.Button):
def __init__(self, master, text):
super().__init__(master, text = text, relief = 'groove')这是可行的,但我不能停止思考,如果有更好的方法来处理这个问题?
发布于 2020-05-30 12:28:59
我没有测试它,但是我的工作方式是这样的:
for widget in root.winfo_children():
if isinstance(widget, tk.Button):
widget.configure(relief = 'groove')winfo_children()为您提供了所有小部件。使用if isinstance,您可以检查小部件是否是tkinter.Button的实例。如果是真的,您可以按自己喜欢的方式配置Button。
我以前也做过这样的事,效果很好。
https://stackoverflow.com/questions/62102253
复制相似问题