PushStatusText() funktioniert nicht
Verfasst: Montag 5. Februar 2007, 21:50
Hallo,
Ich habe ein kleines Problem. PushStatusText() funktioniert nicht wenn man es aus einer anderen klasse ausfuehrt.
Hier erst mal der code:
Wenn ihr das programm startet klickt auf File--> Preferences. Wenn man auf OK im Preferences klickt muesste auf der MyFrame Statusbar "Text" angezeigt werden, aber es geschied nichts. Es kommt auch keine errormeldung vor, aber die def wird ausgefuehrt - in der schell wird print 'def FNameRefresh' angezeigt...
Wenn man die Zeile #self.FNameRefresh(self) im MyFrame nicht auskommentiert wird auf der Statusbar der Text sofort angezeigt - das heisst dass das def eigentlich funktioniert, aber nicht wenn man es aus einer anderen Class ausfuehrt.
Ich glauebe das problem liegt irgendwo hier:
self.ref = MyFrame(self)
self.ref.FNameRefresh(self)
Bitte um Hilfe! Danke!
Mit freundlichen Gruessen,
Aleksandar
Ich habe ein kleines Problem. PushStatusText() funktioniert nicht wenn man es aus einer anderen klasse ausfuehrt.
Hier erst mal der code:
Code: Alles auswählen
import wx
import os
import sys
class PreferencesWindow(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Preferences", size = wx.Size(500, 380))
# Here we create a panel and a notebook on the panel
p = wx.Panel(self)
sizer = wx.BoxSizer()
p.SetSizer(sizer)
p.Button4P = wx.Button(p, label='OK', name='Button4', pos=wx.Point(340, 310), size=wx.Size(60, 20), style=0)
p.Button5P = wx.Button(p, label='Cancel', name='Button5', pos=wx.Point(400, 310), size=wx.Size(60, 20), style=0)
p.Button4P.Bind(wx.EVT_BUTTON, self.OnOKP)
p.Button5P.Bind(wx.EVT_BUTTON, self.OnExitP)
def OnExitP(self, event):
self.Close()
def OnOKP(self, event):
self.ref = MyFrame(self)
self.ref.FNameRefresh(self)
class MyFrame(wx.Frame):
def __init__(self, parent = None, id = -1, title = 'A', size = wx.Size(1024, 750)):
# Frame initialisieren
wx.Frame.__init__(self, parent, id, title = 'A', size = size)
self.Maximize()
#Menue-Leiste oben
menubar = wx.MenuBar()
menu_file = wx.Menu()
file_preferences = wx.MenuItem(menu_file, 102, '&Preferences', 'Preferences')
file_quit = wx.MenuItem(menu_file, 105, '&Quit\tCtrl+Q', 'Quit the Application')
menu_file.AppendItem(file_preferences)
menu_file.AppendSeparator()
menu_file.AppendItem(file_quit)
menubar.Append(menu_file, '&File')
self.SetMenuBar(menubar)
self.statusbar=self.CreateStatusBar()
self.statusbar.SetFieldsCount(3)
self.statusbar.SetStatusWidths([-20, -30,-30])
#self.FNameRefresh(self)
self.Bind(wx.EVT_MENU, self.OnPreferencesWindow, file_preferences)
def FNameRefresh(self, event):
self.statusbar.PushStatusText('Text',2)
print 'def FNameRefresh'
def OnPreferencesWindow(self, event):
win = PreferencesWindow()
win.Show(True)
def main():
app = wx.PySimpleApp()
myframe = MyFrame()
myframe.Show()
app.MainLoop()
if __name__ == "__main__":
main()
Wenn ihr das programm startet klickt auf File--> Preferences. Wenn man auf OK im Preferences klickt muesste auf der MyFrame Statusbar "Text" angezeigt werden, aber es geschied nichts. Es kommt auch keine errormeldung vor, aber die def wird ausgefuehrt - in der schell wird print 'def FNameRefresh' angezeigt...
Wenn man die Zeile #self.FNameRefresh(self) im MyFrame nicht auskommentiert wird auf der Statusbar der Text sofort angezeigt - das heisst dass das def eigentlich funktioniert, aber nicht wenn man es aus einer anderen Class ausfuehrt.
Ich glauebe das problem liegt irgendwo hier:
self.ref = MyFrame(self)
self.ref.FNameRefresh(self)
Bitte um Hilfe! Danke!
Mit freundlichen Gruessen,
Aleksandar