Seite 1 von 1

Verfasst: Mittwoch 12. Dezember 2007, 07:51
von fanus
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
:)

Verfasst: Mittwoch 12. Dezember 2007, 08:11
von gerold
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
:-)

Verfasst: Mittwoch 12. Dezember 2007, 11:16
von fanus
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
:)

Verfasst: Freitag 14. Dezember 2007, 09:39
von gerold
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
:-)

Verfasst: Freitag 14. Dezember 2007, 10:34
von fanus
vielen vielen Dank... genau das passende

LG,
fanus
:)