Je suis essayer de creer une petite application. Je voudrais que le code et le gui sont separé.

Une example:
Main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
#!/usr/bin/python
 
# main.py
 
import gui
import sys
 
def Main():
	EventHandler()
	gui.MainFrame.app.MainLoop()
 
def EventHandler():
	gui.MainFrame.app.Bind(gui.wx.EVT_BUTTON, btn_ExitClick, gui.MainFrame.btn_Exit)
	#gui.MainFrame.app.Bind(gui.wx.EVT_BUTTON, btn_ExitClick, gui.PageTwo.btn_test)
	#gui.PageTwo.Bind(gui.wx.EVT_BUTTON, btn_ExitClick, gui.PageTwo.btn_test)	
 
def btn_ExitClick(event):
	sys.exit()
 
if __name__ == '__main__':
	Main()
et le gui:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
#!/usr/bin/python
 
# gui.py
 
import wx
 
class PageOne(wx.Panel):
	def __init__(self, parent):
		wx.Panel.__init__(self, parent)
		wx.StaticText(self, -1, "Page One", (60,60))
 
 
class PageTwo(wx.Panel):
	def __init__(self, parent):
		wx.Panel.__init__(self, parent)
		wx.StaticText(self, -1, "Page Two", (60,60))
		btn_test = wx.Button(self, wx.ID_ANY, "Button On Page", (200,200))
 
class MainFrame():
	app = wx.App()
	frame = wx.Frame(None, -1, "Blub", size=(600, 600), pos=(0,0), style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
	frame.Centre()
 
	panel = wx.Panel(frame)
	nb = wx.Notebook(panel, size=(500, 500))
 
	page1 = PageOne(nb)
	page2 = PageTwo(nb)
 
	nb.AddPage(page1, "Test")
	nb.AddPage(page2, "Test 2")
 
	btn_Exit = wx.Button(panel, wx.ID_ANY, "Exit", (510,510))
 
 
	frame.Show()
ça marche.
Mais; je ne sais pas comment je peux bind une button c'est placer sur un Notebook (pas de probleme quand le button est sur le form).
J'ai essayé quelques lignes de code, mais quand je execute le programme: "AttributeError: type object 'PageTwo' has no attribute 'btn_test'"

Donc, comment je peux bind le button 'btn_test'?