python - 在 __init__ 方法中更改对象
问题描述
是否可以更改__init__
方法中的对象?我想这样做,例如通过单击更改任何小部件的所有颜色:
from tkinter import *
class App(Tk):
def __init__(self, bg="black"): #<----------
super().__init__()
self.geometry("400x400")
self.bg = bg
self.frame = Frame(self, bg=self.bg)
self.frame.pack(fill=BOTH, expand=YES)
self.btn = Button(self, text="Change BG", command=self.chng_bg)
self.btn.pack()
def chng_bg(self):
self.bg = "red" # I want to change the self.bg for example to use it bye Themes
# without configure each widget seperatly
if __name__ == '__main__':
App()
mainloop()
所以在这里我试图将初始化更改bg=black
为红色背景。我搜索了一个解决方案,但我没有找到任何东西。
解决方案
更改变量不会更改使用变量的小部件。您将需要自己显式更改小部件。
def chng_bg(self):
self.bg = "red"
self.configure(background=self.bg)
self.frame.configure(bg=self.bg)
...
如果您使用主题 (ttk) 小部件,您可以更改主题的属性,所有使用该主题的小部件都会自动更新。
推荐阅读
- spring - 使用 Spring 5 RestTemplate 访问 Https Rest 服务
- vba - Excel VBA IF OR 日期语句
- java - Android CardView 动画不正确
- php - 'security.token_storage' 和 'doctrine.orm.entity_manager' Symfony 之间的依赖关系
- javascript - NodeJs:通过chainpoint-client JS库“无法发布/哈希”的Chainpoint API调用异常
- javascript - JavaScript 中的提升和“让”
- python - 嵌套字典中的字典
- ionic-framework - Ionic 4:如何在全球范围内导入 mixins,而不必在特定文件中导入它们?
- javascript - 使用 Javascript 单击所有 Google Chrome 的“显示密码”图标
- ios - 盲目地将值附加到 CloudKit 记录