wxFrame modal

Plattformunabhängige GUIs mit wxWidgets.
Antworten
fanus
User
Beiträge: 46
Registriert: Dienstag 13. November 2007, 09:53

Mittwoch 12. Dezember 2007, 07:51

Beitrag genug aufgerufen aber leider noch keine Antwort :cry:
na dann eine neue Frage :D : gibts bei wxFrame eine Möglichkeit, sie "Modal" zu benutzen so, dass beim Öffnen die anderen Fenster blokiert werden? halt wie .ShowModal() bei Dialogen...

LG,
fanus
:)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 12. Dezember 2007, 08:11

fanus hat geschrieben:gibts bei wxFrame eine Möglichkeit, sie "Modal" zu benutzen so, dass beim Öffnen die anderen Fenster blokiert werden? halt wie .ShowModal() bei Dialogen...
Hallo fanus!

Ich habe diesen Beitrag abgetrennt, weil es sich hier um eine neue Frage handelt.

Du kannst das Frame mit ``MakeModal()`` modal setzen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
fanus
User
Beiträge: 46
Registriert: Dienstag 13. November 2007, 09:53

Mittwoch 12. Dezember 2007, 11:16

nach dem Schließen der SubFrame (MyGrid) bleibt aber MyFrame noch blockiert!

ich hab ein wxGrid in einem Frame:

Code: Alles auswählen

import wx
import wx.grid 

class MyGrid(wx.Frame) :
    def __init__(self):
        wx.Frame.__init__(self, None, title = "a simple grid", size = (330,200))
        
        self.rowLabels = ["1", "2", "3"]
        self.colLabels = ["a", "b", "c"]
        self.grid = wx.grid.Grid(self)
        self.grid.CreateGrid(3, 3)
       
        for row in range(3):
            self.grid.SetRowLabelValue(row, self.rowLabels[row])
            self.grid.SetColLabelValue(row, self.colLabels[row])
            for col in range(3):
                self.grid.SetCellValue(row, col, "%s" % "CellValue")
in MyFrame hab ich eine ButtonMethode OnOpenGrid

Code: Alles auswählen

from Grid import MyGrid
class MyFrame(wx.Frame):
    ...

    def OnOpenGrid(self, event):
        MyGrid().MakeModal() 
        MyGrid().Show()

"MyFrame-Fenster" bleibt blockiert auch nachdem ich "Grid-Fenster" geschloßen hab... :roll:

Danke für Eure Hilfe.

LG,
fanus
:)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 14. Dezember 2007, 09:39

Hallo fanus!


Hints:
- http://starship.python.net/crew/gherman ... ode11.html
- http://www.manning.com/rappin/

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx

wx.SetDefaultPyEncoding("iso-8859-15")


class MyModalFrame(wx.Frame):
    
    def __init__(self, parent, title = "Modal Frame", size = wx.Size(500, 600)):
        wx.Frame.__init__(self, parent, -1, title, size = size)
        panel = wx.Panel(self)
        panel.SetBackgroundColour("green")
        self.MakeModal(True)
        self.Bind(wx.EVT_CLOSE, self.on_close)
    
    
    def on_close(self, event = None):
        self.MakeModal(False)
        event.Skip()
    


class MyMainFrame(wx.Frame):
    
    def __init__(
        self, parent = None, title = "Example", size = wx.Size(350, 220)
    ):
        wx.Frame.__init__(self, parent, -1, title, size = size)
        
        panel = wx.Panel(self)
        
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox_main)
        
        vbox_main.AddStretchSpacer()
        
        btn_modalframe = wx.Button(panel, label = u"Modales Frame anzeigen")
        btn_modalframe.Bind(wx.EVT_BUTTON, self.show_modal_frame)
        vbox_main.Add(btn_modalframe, 0, wx.CENTER)
        
        vbox_main.AddStretchSpacer()
    
    
    def show_modal_frame(self, event = None):
        self.modal_frame = MyModalFrame(self)
        self.modal_frame.Show()


def main():
    """Testing"""
    app = wx.PySimpleApp()
    f = MyMainFrame()
    f.Center()
    f.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()
Hilft dir das weiter?

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
fanus
User
Beiträge: 46
Registriert: Dienstag 13. November 2007, 09:53

Freitag 14. Dezember 2007, 10:34

vielen vielen Dank... genau das passende

LG,
fanus
:)
Antworten