Предположим, что текст по умолчанию для кнопок, StaticText из wxpython GUI регулируется параметром (или параметрами), я хочу изменить внешний вид при изменении параметра (-ов).Вот простой пример:
import wx
class Example(wx.Frame):
def __init__(self, title):
super().__init__(None, title=title)
self.panel = wx.Panel(self)
self.prefix = "Prefix-Alpha"
self.initUI()
self.Centre()
def initUI(self):
sizer = wx.GridSizer(3, 1, 10, 10)
self.create_button1(sizer)
self.create_button2(sizer)
self.create_button3(sizer)
self.panel.SetSizer(sizer)
def create_button1(self, sizer):
button1 = wx.Button(self.panel, label=self.prefix + "-Button 1")
sizer.Add(button1, 1, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
def create_button2(self, sizer):
button2 = wx.Button(self.panel, label=self.prefix + "-Button 2")
sizer.Add(button2, 1, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
def create_button3(self, sizer):
button3 = wx.Button(self.panel, label="Change Prefix")
sizer.Add(button3, 1, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
button3.Bind(wx.EVT_BUTTON, self.on_change_prefix)
def on_change_prefix(self, e):
if self.prefix == "Prefix-Alpha":
self.prefix = "Prefix-Beta"
else:
self.prefix = "Prefix-Alpha"
# how to change the appearance of button1 and button2?
if __name__ == '__main__':
app = wx.App()
Example("Simple Example").Show()
app.MainLoop()
![enter image description here](https://i.stack.imgur.com/wJHrm.png)
Как видите, текст для button1 и button2 регулируется переменной self.prefix
,Я хочу изменить префикс при нажатии кнопки Change Prefix
.Как мне добиться этого с минимальной модификацией исходного кода?
Один из способов, который я могу себе представить, это изменить button1
и button2
на self.button1
и self.button2
, а затем вызвать self.button1.SetValue()
и self.button2.SetValue()
при нажатии кнопки change prefix
.Мне не нравится этот метод, потому что в моем реальном производстве есть много виджетов для управления, а не только два. Я ищу способ только re-initUI
или что-то очень краткое, это возможно?
Вспышка закрытия и открытия окна / рамки также принимается.