Klassenproblem

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

Donnerstag 2. Dezember 2004, 16:29

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
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 2. Dezember 2004, 16:32

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:

Donnerstag 2. Dezember 2004, 17:13

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
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 2. Dezember 2004, 20:19

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

Sonntag 5. Dezember 2004, 00:49

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