Pages : 1
#1 Le 02/05/2008, à 05:19
- Abdou-g
wxPthon et des fenetre multiples
salut,
j'ecris une interface graphique en wxpython, mais j'ai du mal à trouver comment mettre des bloc des fenetre dans la fenetre principale. je veux deux bloc qui vont contenir d'autres et un troisième pour du texte, et je veux pouvoir gerer leur dimension et qui s'adapte avec la fenetre principale si elle change de taille. quequ'un aurait des idées svp?
merci
Hors ligne
#2 Le 02/05/2008, à 13:45
- thibaultg
Re : wxPthon et des fenetre multiples
Par bloc de fenêtre, du parle de fenêtre interne?
# -*- coding: iso-8859-15 -*-
#!/usr/bin/env python
import wx
#----------------------------------------------------------------------
ID_Menu_New = 5007
ID_Menu_Exit = 5006
ID_WINDOW_TOP = 5000
ID_WINDOW_LEFT1 = 5001
ID_WINDOW_LEFT2 = 5002
ID_WINDOW_BOTTOM = 5005
#----------------------------------------------------------------------
class MyParentFrame(wx.MDIParentFrame):
def __init__(self):
wx.MDIParentFrame.__init__(self, None, -1, "Explorer NetCDF", size=(600, 400), style = wx.DEFAULT_FRAME_STYLE | wx.HSCROLL | wx.VSCROLL)
###definition du menu###
menu = wx.Menu()
menu.Append(ID_Menu_New, "Nouvelle fenetre interne\tCTRL+n")
menu.Append(ID_Menu_Exit, "Exit\tCTRL+w")
menubar = wx.MenuBar()
menubar.Append(menu, "Frame")
self.SetMenuBar(menubar)
###action lié au menu###
self.Bind(wx.EVT_MENU, self.OnNewWindow, id=ID_Menu_New)
self.Bind(wx.EVT_MENU, self.OnExit, id=ID_Menu_Exit)
###action pour le redimensionne des fenetre###
self.Bind(wx.EVT_SASH_DRAGGED_RANGE, self.OnSashDrag, id=ID_WINDOW_TOP, id2=ID_WINDOW_BOTTOM)
self.Bind(wx.EVT_SIZE, self.OnSize)
###cré la fenetre interne###
def OnNewWindow(self, evt):
win = wx.MDIChildFrame(self, -1, "Child Window: %d")
win.Show(True)
###autre action###
def OnSize(self, event):
wx.LayoutAlgorithm().LayoutMDIFrame(self)
def OnSashDrag(self, event):
if event.GetDragStatus() == wx.SASH_STATUS_OUT_OF_RANGE:
return
eID = event.GetId()
if eID == ID_WINDOW_TOP:
self.topWindow.SetDefaultSize((1000, event.GetDragRect().height))
elif eID == ID_WINDOW_LEFT1:
self.leftWindow1.SetDefaultSize((event.GetDragRect().width, 1000))
elif eID == ID_WINDOW_LEFT2:
self.leftWindow2.SetDefaultSize((event.GetDragRect().width, 1000))
elif eID == ID_WINDOW_BOTTOM:
self.bottomWindow.SetDefaultSize((1000, event.GetDragRect().height))
wx.LayoutAlgorithm().LayoutMDIFrame(self)
self.GetClientWindow().Refresh()
def OnExit(self, evt):
self.Close(True)
if __name__ == '__main__':
class MyApp(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
frame = MyParentFrame()
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(False)
app.MainLoop()
Dernière modification par thibaultg (Le 02/05/2008, à 13:46)
Hors ligne
#3 Le 02/05/2008, à 16:59
- Abdou-g
Re : wxPthon et des fenetre multiples
merci mais c'est pas ça ce que je voudrais, désolé de ne pas bien m'exprimer.
voilà une capture d'ecran d'un application similaire
[img]file:///media/WD%20Passport/Documents/TELECOM%20BRETAGNE/S2/Projet%20D%C3%A9veloppement/image.png[/img]
Hors ligne
#4 Le 02/05/2008, à 17:01
- Abdou-g
Re : wxPthon et des fenetre multiples
oups:(, comment faire pour insérer une image ici?
Hors ligne
#5 Le 02/05/2008, à 17:38
- Abdou-g
Re : wxPthon et des fenetre multiples
http://www.developpez.net/forums/attach … 1209744235
j'ai mis la meme discussion sur un autre forum pour pouvoir mettre l'image
voilà
Hors ligne
#6 Le 12/05/2008, à 21:19
- thibaultg
Re : wxPthon et des fenetre multiples
Oki j'avais compris de travers; il faut que tu utiliser des panels que tu vas organiser avec des sizer un exemple http://www.developpez.net/forums/showthread.php?t=84512
Hors ligne