2017-09-10 2 views
0

Ich schreibe gerade eine kleine GUI und wollte wissen, wie ich wxpython-Widgets von der Callback-Funktion eines anderen beeinflussen kann.wxpython: Wie kann man wx-Objekte von der Callback-Funktion eines anderen wx-Objekts beeinflussen?

Im Moment kann ich Widgets nicht von meinen Callback-Funktionen beeinflussen, da in der Callback-Funktion meine Button-Widgets nicht definiert werden.

Zum Beispiel ist eine Sache, die ich tun möchte, ist auf btnLoad gedrückt wird, btnSave soll (siehe unten) aktiviert sein.

btnSave = wx.Button(...) 
    btnSave.Disable() 

    btnLoad = wx.Button(...) 

    self.Bind(wx.EVT_BUTTON, self.onBtnLoad, btnLoad) 

def onBtnLoad(self, event): 
    btnSolve.Enable() # this is where I have issues. Obviously because btnSolve is undefined here. 

Vielen Dank im Voraus :)

P. S. Entschuldigung, wenn ich etwas seltsames gesagt habe, es ist mein zweiter Tag, der Benutzeroberflächen und wxpython codiert.

Antwort

0

Meinst du sowas?

import wx 

class ButtonFrame(wx.Frame): 
    def __init__(self, value): 
     wx.Frame.__init__(self,None) 
     self.btn1 = wx.Button(self, -1, ("Clickable")) 
     self.btn2 = wx.Button(self, -1, ("Not Clickable")) 
     self.btnSizer = wx.BoxSizer(wx.HORIZONTAL) 
     self.btnSizer.Add(self.btn1 , 0, wx.RIGHT, 10) 
     self.btnSizer.Add(self.btn2 , 0, wx.RIGHT, 10) 
     self.btn1.Bind(wx.EVT_BUTTON, self.OnPressA) 
     self.btn2.Bind(wx.EVT_BUTTON, self.OnPressB) 
     self.btn2.Disable() 
     self.SetSizer(self.btnSizer) 
     self.Centre() 
     self.Show() 

    def OnPressA(self,evt): 
     self.btn1.SetLabel('Not Clickable') 
     self.btn2.SetLabel('Clickable') 
     self.btn2.Enable() 
     self.btn1.Disable() 
     self.Layout() 

    def OnPressB(self,evt): 
     self.btn2.SetLabel('Not Clickable') 
     self.btn1.SetLabel('Clickable') 
     self.btn1.Enable() 
     self.btn2.Disable() 
     self.Layout() 

if __name__ == "__main__": 
    app = wx.App() 
    ButtonFrame(None) 
    app.MainLoop() 

Nicht zu wissen, wie erfahren Sie in diesen Dingen sind, können Sie diese Beschreibung der Variablen self nützlich finden.
https://pythontips.com/2013/08/07/the-self-variable-in-python-explained/

+0

Oh, das funktioniert perfekt! Vielen Dank: D Ich habe bemerkt, dass "self" in Python etwas anders ist, aber jetzt weiß ich warum. –

Verwandte Themen