以下代码是我最初尝试获取gui应用程序以更新其字体等,当用户在config.ini设置中更改它时:
def on_config_change(self, config, section, key, value):
"""
sets font,size colour etc..
when user changes in settings.
"""
if config is self.config:
token = (section, key)
if token == ('Font', 'button_font'):
print('Our button font has been changed to', value)
GetInformation().lay_button.font_size = str(value)
GetInformation().bet_button.font_size = str(value)
def build(self):
self.config.write()
return GetInformation()
我的代码更新了配置,但屏幕从未更新,无需重新启动应用程序。
以下代码有效:
def on_config_change(self, config, section, key, value):
"""
sets font,size colour etc..
when user changes in settings.
"""
if config is self.config:
token = (section, key)
if token == ('Font', 'button_font'):
print('Our button font has been changed to', value)
self.getInformation.lay_button.font_size = str(value)
self.getInformation.bet_button.font_size = str(value)
def build(self):
self.config.write()
self.getInformation = GetInformation()
return self.getInformation
调用GetInformation()。lay_button.font_size有什么区别 和self.getInformation.lay_button.font_size?
答案 0 :(得分:1)
设置GetInformation().lay_button.font_size
会更改您刚刚创建的全新 lay_button
的{{1}}字体大小,并且不会挂钩。
设置GetInformation
会更改self.getInformation.lay_button.font_size
触发的当前lay_button
的{{1}}字体大小。 GetInformation
已挂钩到您的系统中,因此on_config_change
需要您完成工作。
答案 1 :(得分:1)
除非您专门设计代码(通常是 Singleton 模式),否则Class().method()
会创建一个从Class
实例化的新对象,并在其上调用方法method
。 然后销毁该对象,因为没有指定接收变量。
self.object.method()
在现有对象method
上调用方法self.object
。此对象是持久性的,因为它保存为顶级类(self
)的成员。
在第一个示例中,您实际上是在三个不同的对象上调用不同的方法。在方法on_config_change
中,两个对象立即被销毁。在第二个示例中,所有调用都应用于同一个对象,然后保留其修改后的属性。