Wechsel zwischen zwei Oberflächen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
sephos
User
Beiträge: 3
Registriert: Dienstag 19. August 2008, 11:05

Dienstag 19. August 2008, 11:14

Hallo,
ich habe zwei grafische Oberflächen gebastelt. Nun ist es so das die Hauptoberfläche eine andere grafische Oberfläche aufruft. Wenn die zweite aufgerufen wird ist diese aber hinter der ersten "versteckt". Gibt es eine Möglichkeit die zweite vor die Hauptoberfläche zu bringen und wenn ja wie :K ?? Für Hilfe bin ich echt dankbar :lol: . Zur Erstellung habe ich den Boa Constructor genutzt.

MFG Sephos
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 19. August 2008, 12:10

Hallo und willkommen im Forum,

zur Beantwortung dieser Frage bietest Du leider viel zu wenig Information. Erst daraus, dass Du den BoaConstructor verwendet hast, kann man erkennen, dass es sich beim GUI-Toolkit um wxPython handelt. Dafür haben wir übrigens ein ExtraUnterforum.

Wie geschieht denn der Aufruf der zweiten Oberfläche? Was ist das für eine Oberfläche? Am besten ist es, wenn Du dazu den relevanten Code in einem lauffähigen Minimalbeispiel zeigst. Wenn dazu rel. viel Code gebraucht wird, kannst Du den Code hier posten und dann im Forum verlinken, denn das Forum wird sehr langsam, wenn in einem Thread viel Code steckt.

Gruß,
Christian
sephos
User
Beiträge: 3
Registriert: Dienstag 19. August 2008, 11:05

Dienstag 19. August 2008, 15:53

Hallo
also ich habe den Fahler bereits gefunden, vielleicht interessiert die Lösung dennoch jemanden :lol:

Dies ist der Code für die GUI für mein Hauptprogramm:

Code: Alles auswählen

wx.Frame.__init__(self, id=wxID_FIRMA, name='Firma',
              parent=prnt,  size=wx.Size(758, 768),
              style=wx.FRAME_TOOL_WINDOW | wx.SYSTEM_MENU | wx.DOUBLE_BORDER | wx.DEFAULT_FRAME_STYLE  |  wx.STAY_ON_TOP, 
              title='Firma')
        self.SetClientSize(wx.Size(750, 741))
        self.SetBackgroundColour(wx.Colour(146, 178, 193))
        self.Centre()
        self.Bind(wx.EVT_CLOSE,self.OnFrameClose,id = wxID_FIRMA)
Meine zweite Oberfläche wird durch einen Button-Klick aufgerufen
Hier der Code für die zweite Oberfläche:

Code: Alles auswählen

wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=None ,
              pos=wx.Point(433, 245), size=wx.Size(408, 355),
              style=wx.CAPTION | wx.HSCROLL | wx.ALWAYS_SHOW_SB | wx.DOUBLE_BORDER | wx.NO_3D,
              title='Identifikation')
Gefehlt hatte bei mir der Aufruf | wx.STAY_ON_TOP, bei der zweiten Oberfläche, danach funktionierte es

Code: Alles auswählen

class BoaApp(wx.App):
    def OnInit(self):
        
        self.main = create(None)
        self.main.Show()
 
        self.SetTopWindow(self.main)
        return True

def main():
    
    application = BoaApp(0)
    application.MainLoop()
   
    
if __name__ == '__main__':
    main()      
Gruss Sephos
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 19. August 2008, 16:42

Sag' mal: Bist Du mit User Xisto und seinem Thread identisch oder habt ihr was miteinander zu tun?

Ist ja auch egal. Aber Dein Code sieht ein wenig seltsam aus, so ohne das klar wird wo wx.Frame.__init__() steht, würde ich jedenfalls nicht weiter wissen. Und wx.STAY_ON_TOP? Kann sein, dass Du das willst, vielleicht aber auch nicht, weil das ein Parameter ist, der doch verhindern sollte, dass Du überhaupt nicht mehr das Hauptfenster nach vorne holen kannst. Das kann natürlich auch gewünscht sein, aber ich hatte die Frage anders interpretiert.

Gruß,
Christian
sephos
User
Beiträge: 3
Registriert: Dienstag 19. August 2008, 11:05

Dienstag 19. August 2008, 17:14

Hallo,

nein mit Xisto hab ich nix zu tun, habe auch gerade mitbekommen das er eine ähnlich Anfrage stellt.

Das zweite Fenster wird bei mir aber automatisch geschlossen, sobald ein bestimmter Button gedrückt wurde, so das nur noch mein Hauptfenster offen ist.

Aber es läuft zum Glück so wie es sollte, vielen Dank für deine Bemühungen :wink:
Antworten