2019년 2월 13일 수요일

[python] wxPython Examples


1. wxFormBuilder





Generaged Code:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# -*- coding: utf-8 -*-

###########################################################################
## Python code generated with wxFormBuilder (version Oct 26 2018)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc

wx.ID_MenuExit = 1000

###########################################################################
## Class wxForm
###########################################################################

class wxForm ( wx.Frame ):

 def __init__( self, parent ):
  wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"wxForm", pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

  self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )

  self.m_menubar1 = wx.MenuBar( 0 )
  self.m_menuFile = wx.Menu()
  self.m_menuItemExit = wx.MenuItem( self.m_menuFile, wx.ID_MenuExit, u"Exit", wx.EmptyString, wx.ITEM_NORMAL )
  self.m_menuItemExit.SetBitmap( wx.Bitmap( u"icon/exit.png", wx.BITMAP_TYPE_ANY ) )
  self.m_menuFile.Append( self.m_menuItemExit )

  self.m_menubar1.Append( self.m_menuFile, u"File" )

  self.SetMenuBar( self.m_menubar1 )

  self.m_statusBar1 = self.CreateStatusBar( 1, wx.STB_SIZEGRIP, wx.ID_ANY )
  self.m_toolBar1 = self.CreateToolBar( wx.TB_DEFAULT_STYLE|wx.TB_FLAT|wx.TB_HORIZONTAL|wx.TB_TEXT, wx.ID_ANY )
  self.m_toolExit = self.m_toolBar1.AddLabelTool( wx.ID_ANY, u"Exit", wx.Bitmap( u"icon/exit.png", wx.BITMAP_TYPE_ANY ), wx.NullBitmap, wx.ITEM_NORMAL, wx.EmptyString, wx.EmptyString, None )

  self.m_toolBar1.Realize()

  bSizer1 = wx.BoxSizer( wx.VERTICAL )

  self.m_splitter1 = wx.SplitterWindow( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.SP_3D|wx.SP_BORDER )
  self.m_splitter1.SetSashSize( 6 )
  self.m_splitter1.Bind( wx.EVT_IDLE, self.m_splitter1OnIdle )

  self.m_panel1 = wx.Panel( self.m_splitter1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
  self.m_panel1.SetMinSize( wx.Size( 120,-1 ) )

  bSizer3 = wx.BoxSizer( wx.VERTICAL )

  m_comboBox1Choices = [ u"Combo 1", u"Combo 2", u"Combo 3" ]
  self.m_comboBox1 = wx.ComboBox( self.m_panel1, wx.ID_ANY, u"Combo 1", wx.DefaultPosition, wx.DefaultSize, m_comboBox1Choices, 0 )
  bSizer3.Add( self.m_comboBox1, 0, wx.ALL|wx.EXPAND, 5 )

  self.m_buttonClear = wx.Button( self.m_panel1, wx.ID_ANY, u"Clear", wx.DefaultPosition, wx.DefaultSize, 0 )
  bSizer3.Add( self.m_buttonClear, 0, wx.ALL|wx.EXPAND, 1 )

  self.m_buttonCopy = wx.Button( self.m_panel1, wx.ID_ANY, u"Copy", wx.DefaultPosition, wx.DefaultSize, 0 )
  bSizer3.Add( self.m_buttonCopy, 0, wx.ALL|wx.EXPAND, 1 )

  self.m_buttonPaste = wx.Button( self.m_panel1, wx.ID_ANY, u"Paste", wx.DefaultPosition, wx.DefaultSize, 0 )
  bSizer3.Add( self.m_buttonPaste, 0, wx.ALL|wx.EXPAND, 1 )


  self.m_panel1.SetSizer( bSizer3 )
  self.m_panel1.Layout()
  bSizer3.Fit( self.m_panel1 )
  self.m_panel2 = wx.Panel( self.m_splitter1, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
  self.m_panel2.SetMinSize( wx.Size( 200,-1 ) )

  bSizer4 = wx.BoxSizer( wx.VERTICAL )

  self.m_textCtrl1 = wx.TextCtrl( self.m_panel2, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_MULTILINE )
  bSizer4.Add( self.m_textCtrl1, 1, wx.ALL|wx.EXPAND, 5 )


  self.m_panel2.SetSizer( bSizer4 )
  self.m_panel2.Layout()
  bSizer4.Fit( self.m_panel2 )
  self.m_splitter1.SplitVertically( self.m_panel1, self.m_panel2, 120 )
  bSizer1.Add( self.m_splitter1, 1, wx.EXPAND|wx.TOP, 1 )


  self.SetSizer( bSizer1 )
  self.Layout()

  self.Centre( wx.BOTH )

 def __del__( self ):
  pass

 def m_splitter1OnIdle( self, event ):
  self.m_splitter1.SetSashPosition( 120 )
  self.m_splitter1.Unbind( wx.EVT_IDLE )



2. Event Handler


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
 def OnFileExit(self, event):
  self.Close(True)
  
 def OnClose(self, event):
  dlg = wx.MessageDialog(self, 
          "Do you really want to close this application?",
          "Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION)
  result = dlg.ShowModal()
  dlg.Destroy()
  if result == wx.ID_OK:
   self.Destroy()

 def OnClear(self, event):
  self.m_textCtrl1.Clear()
   
 def OnCopy(self, event):
  if wx.TheClipboard.Open():
   wx.TheClipboard.SetData(wx.TextDataObject(self.m_textCtrl1.GetValue()))
   wx.TheClipboard.Close()
   
 def OnPaste(self, event):
  text_data = wx.TextDataObject()
  if wx.TheClipboard.Open():
   success = wx.TheClipboard.GetData(text_data)
   wx.TheClipboard.Close()
  if success:
   self.m_textCtrl1.SetValue(text_data.GetText())
   


3. Main Loop and Event Registration


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
if __name__ == '__main__':
 app = wx.PySimpleApp()
 frame = wxForm(None)
 frame.SetIcon(wx.Icon("icon/icon.ico", wx.BITMAP_TYPE_ANY))
 frame.Bind(wx.EVT_CLOSE, frame.OnClose)
 frame.Bind(wx.EVT_MENU, frame.OnFileExit, frame.m_menuItemExit)
 frame.Bind(wx.EVT_TOOL, frame.OnFileExit, frame.m_toolExit )
 frame.Bind(wx.EVT_BUTTON, frame.OnClear, frame.m_buttonClear )
 frame.Bind(wx.EVT_BUTTON, frame.OnCopy, frame.m_buttonCopy )
 frame.Bind(wx.EVT_BUTTON, frame.OnPaste, frame.m_buttonPaste )
 frame.SetStatusText("Ready")
 frame.Show() 
 app.MainLoop()




댓글 없음:

댓글 쓰기