Klassenproblem

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi jens,

uiuiui ;)

Code: Alles auswählen

class CDselection:
    def __init__( self, owner ):
        self = owner
        self.CDselectFrame = CDselectFrame.CDselectFrame(None, -1, "")
        self.SetTopWindow(self.CDselectFrame)
        self.CDselectFrame.Show()
keine gute Idee self mit owner zu überschreiben.

Code: Alles auswählen

import wx
import mainFrame
import CDselectFrame

class MyApp(wx.App):

    def CDSelection(self):
        self.CDselectFrame = CDselectFrame.CDselectFrame(None, -1, "")
        self.SetTopWindow(self.CDselectFrame)
        self.CDselectFrame.Show() 

    def OnInit(self):
        wx.InitAllImageHandlers()
        self.mainFrame = mainFrame.mainFrame(None, -1, "")
        self.SetTopWindow(self.mainFrame)
        self.mainFrame.Show()

        self.CDSelection()


app = MyApp(0)
app.MainLoop()
nicht getestet!
Sollte ohne extra Klasse das machen was du willst.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ups... Das hat sich ein wenig überschnitten...

Ich weiß das es mit einer Klasse geht... Ich würd nur gern jedes Fenster/Frame seperat behandeln und nicht alle Funktionen in einer Klasse bauen...



Ok, so geht's:

Code: Alles auswählen

import wx
import mainFrame
import CDselectFrame

class CDselection:
    def __init__( self, owner ):
        self.CDselectFrame = CDselectFrame.CDselectFrame(None, -1, "")
        owner.SetTopWindow(self.CDselectFrame)
        self.CDselectFrame.Show()

        wx.EVT_BUTTON(owner, self.CDselectFrame.button_abbruch.GetId(), self.abbruch)

    def abbruch(self, event):
        self.CDselectFrame.Hide()

class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        self.mainFrame = mainFrame.mainFrame(None, -1, "")
        self.SetTopWindow(self.mainFrame)
        self.mainFrame.Show()

        CDselection( self )
Aber schön ist was anderes...

Zumal... Das ist jetzt MultiThreading :) Naja, wenn das CDselectFrame durch ein Button des mainFrame aufgerufen wird... Kann man den Button mehrmals drücken und es kommt immer ein neues Fenster... Das macht in meinem Fall aber nicht wirklich sinn...
Muß man das per Hand abfragen???
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

dann würde ich den Button wenn ein CDselectFrame da ist unanklickbar machen und wenn das CDselectFrame geschlossen wird wieder anklickbar.

Dookie
[code]#!/usr/bin/env python
import this[/code]
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Gute Idee... Ob man wohl ein ganzes Frame "deaktivieren" kann???
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Nur zur Anmerkung:

Das CDselectFrame macht man besser als wx.Dialog... Dieses kann man dann mit .ShowModal() aufrufen... Damit wird das Hauptfenster automatisch blockiert und das MultiThreading-Effekt ist damit auch weg, weil das Hauptprogramm solange "eingeschlafen" ist...
Antworten