Neuling fragt

Plattformunabhängige GUIs mit wxWidgets.
Antworten
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

ich hab ein kleines Porblem, bei einem Tutorial hab ich dieses Programm gefunden (n bisel zusammengebastelt) ... ich versteh aber die ausgabe nicht ... wieso habe ich nur einen Button, obwohl ich in dem markiertem Bereich doch fünf hingeschrieben habe ...:

Code: Alles auswählen

from wxPython.wx import *

ID_ABOUT=101
ID_EXIT=102

class MyFrame(wxFrame):
    def __init__(self, parent, ID, title):
        wxFrame.__init__(self, parent, ID, title,
                         wxDefaultPosition, wxSize(200, 150))
        self.CreateStatusBar()
        self.SetStatusText("This is the statusbar")

        menu = wxMenu()
        menu.Append(ID_ABOUT, "&About",
                    "More information about this program")
        menu.AppendSeparator()
        menu.Append(ID_EXIT, "E&xit", "Terminate the program")

        menuBar = wxMenuBar()
        menuBar.Append(menu, "&File");

        self.SetMenuBar(menuBar)

        EVT_MENU(self, ID_ABOUT, self.OnAbout)
        EVT_MENU(self, ID_EXIT,  self.TimeToQuit)

    def OnAbout(self, event):
        dlg = wxMessageDialog(self, "This sample program shows off\n"
                              "frames, menus, statusbars, and this\n"
                              "message dialog.",
                              "About Me", wxOK | wxICON_INFORMATION)
        dlg.ShowModal()
        dlg.Destroy()


    def TimeToQuit(self, event):
        self.Close(true)



class MyApp(wxApp):
    def OnInit(self):
        frame = MyFrame(NULL, -1, "Hello from wxPython")
        frame.Show(true)
        self.SetTopWindow(frame)
        ##################markierter Bereich############################
        box = wxBoxSizer(wxHORIZONTAL)
        box.Add(wxButton(frame, 1010, "one"), 0)
        box.Add(wxButton(frame, 1011, "two"), 1)
        box.Add(wxButton(frame, 1012, "three"), 2)
        box.Add(wxButton(frame, 1013, "four"), 2)
        box.Add(wxButton(frame, 1014, "five"), 3)
        ################################################################
        return true

if __name__=='__main__':
    app = MyApp(0)
    app.MainLoop()
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi cime,

nun, zunächst einmal möchtest Du vielleicht eine neue wxPython-Version installieren? Eigentlich nämlich ist man bei Version 2.6 und schreibt "import wx".

Dann würde ich nicht raten irgendwelche Dinge in die MyApp-Klasse zu setzten, die da nicht hingehören, wie die Buttons ;-). Da gehören nur Dinge rein, die tatsächlich direkt in den MainLoop gehören, wie zum Beispiel ein SplashScrren oder so - aber nicht Dinge, die zum Layout gehören.

Und im Hauptframe - oder anderen Frames und Panels, wie es Dir beliebt - kannst Du Buttons setzten:

Code: Alles auswählen

Knopf1 = wx.Button(p,id,"Knopfbeschriftung")
#id ist eine id-Nummer, p z. B. ein Panel
Knopf1.SetSize(openpatternbutton.GetBestSize())
mysizer.Add(Knopf1)
self.Knopf1 = Knopf1
self.Bind(wx.EVT_BUTTON,self.Knopf1-Funktion, Knopf1)
Sollte funktioneren, aber vielleicht magst Du noch mal in die Demo schauen, was Du alles mit Buttons und Sizern machen kannst und wie das funktioniert.

Ansonsten, hier noch mal fragen.

Gruss,
Christian
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

CM hat geschrieben:Hoi cime,

nun, zunächst einmal möchtest Du vielleicht eine neue wxPython-Version installieren? Eigentlich nämlich ist man bei Version 2.6 und schreibt "import wx".
thx, hab ich, doch wie gsagt, es eher zusammenkopiert und dort war es schon so geschrieben (PS: hab 2.6)

CM hat geschrieben: Dann würde ich nicht raten irgendwelche Dinge in die MyApp-Klasse zu setzten, die da nicht hingehören, wie die Buttons ;-). Da gehören nur Dinge rein, die tatsächlich direkt in den MainLoop gehören, wie zum Beispiel ein SplashScrren oder so - aber nicht Dinge, die zum Layout gehören.

Und im Hauptframe - oder anderen Frames und Panels, wie es Dir beliebt - kannst Du Buttons setzten:
okay
CM hat geschrieben:

Code: Alles auswählen

Knopf1 = wx.Button(p,id,"Knopfbeschriftung")
#id ist eine id-Nummer, p z. B. ein Panel
Knopf1.SetSize(openpatternbutton.GetBestSize())
mysizer.Add(Knopf1)
self.Knopf1 = Knopf1
self.Bind(wx.EVT_BUTTON,self.Knopf1-Funktion, Knopf1)
Sollte funktioneren, aber vielleicht magst Du noch mal in die Demo schauen, was Du alles mit Buttons und Sizern machen kannst und wie das funktioniert.

Ansonsten, hier noch mal fragen.

Gruss,
Christian
ein riesenfettes Dankeschön, welche Demo meinst du denn ... oder kennt jemand noch ein schönes Tutorial, weil das, das ich benutze, ein wenig sehr veraltet ist (wie man gesehen hat) ...???
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

cime hat geschrieben: ein riesenfettes Dankeschön, welche Demo meinst du denn ... oder kennt jemand noch ein schönes Tutorial, weil das, das ich benutze, ein wenig sehr veraltet ist (wie man gesehen hat) ...???
Vielleicht mit wxPython Wiki Pages:

unter anderem:

http://wiki.wxpython.org/index.cgi/Getting_20Started
http://wiki.wxpython.org/index.cgi/CrashCourse

Bis du auf Windows?
Das Demo und die wxWidgets Hilfe ist extra zum herunterladen:

http://prdownloads.sourceforge.net/wxpy ... e?download
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

Daaaaaaaaaankeeeeeeeeeee
Antworten