wxpython类似TK中的label frame实现

时间:2023-01-23 07:11:00
StaticBox
Python 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
'''
ZetCode wxPython tutorial
 
In this code example, we create a
custom dialog.
 
author: Jan Bodnar
website: www.zetcode.com
last modified: July 2012
'''
 
import  wx
 
class  ChangeDepthDialog(wx.Dialog):
     
     def  __init__( self * args,  * * kw):
         super (ChangeDepthDialog,  self ).__init__( * args,  * * kw) 
             
         self .InitUI()
         self .SetSize(( 250 200 ))
         self .SetTitle( "Change Color Depth" )
         
         
     def  InitUI( self ):
 
         pnl  =  wx.Panel( self )
         vbox  =  wx.BoxSizer(wx.VERTICAL)
 
         sb  =  wx.StaticBox(pnl, label = 'Colors' )
         sbs  =  wx.StaticBoxSizer(sb, orient = wx.VERTICAL)        
         sbs.Add(wx.RadioButton(pnl, label = '256 Colors'
             style = wx.RB_GROUP))
         sbs.Add(wx.RadioButton(pnl, label = '16 Colors' ))
         sbs.Add(wx.RadioButton(pnl, label = '2 Colors' ))
         
         hbox1  =  wx.BoxSizer(wx.HORIZONTAL)        
         hbox1.Add(wx.RadioButton(pnl, label = 'Custom' ))
         hbox1.Add(wx.TextCtrl(pnl), flag = wx.LEFT, border = 5 )
         sbs.Add(hbox1)
         
         pnl.SetSizer(sbs)
        
         hbox2  =  wx.BoxSizer(wx.HORIZONTAL)
         okButton  =  wx.Button( self , label = 'Ok' )
         closeButton  =  wx.Button( self , label = 'Close' )
         hbox2.Add(okButton)
         hbox2.Add(closeButton, flag = wx.LEFT, border = 5 )
 
         vbox.Add(pnl, proportion = 1
             flag = wx. ALL |wx.EXPAND, border = 5 )
         vbox.Add(hbox2, 
             flag = wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, border = 10 )
 
         self .SetSizer(vbox)
         
         okButton.Bind(wx.EVT_BUTTON,  self .OnClose)
         closeButton.Bind(wx.EVT_BUTTON,  self .OnClose)
         
         
     def  OnClose( self , e):
         
         self .Destroy()
         
         
class  Example(wx.Frame):
     
     def  __init__( self * args,  * * kw):
         super (Example,  self ).__init__( * args,  * * kw) 
             
         self .InitUI()
         
         
     def  InitUI( self ):    
     
         ID_DEPTH  =  wx.NewId()
 
         tb  =  self .CreateToolBar()
         tb.AddLabelTool( id = ID_DEPTH, label = '', 
             bitmap = wx.Bitmap( 'color.png' ))
         
         tb.Realize()
 
         self .Bind(wx.EVT_TOOL,  self .OnChangeDepth, 
             id = ID_DEPTH)
 
         self .SetSize(( 300 200 ))
         self .SetTitle( 'Custom dialog' )
         self .Centre()
         self .Show( True )
         
         
     def  OnChangeDepth( self , e):
         
         chgdep  =  ChangeDepthDialog( None
             title = 'Change Color Depth' )
         chgdep.ShowModal()
         chgdep.Destroy()        
 
 
def  main():
     
     ex  =  wx.App()
     Example( None )
     ex.MainLoop()    
 
 
if  __name__  = =  '__main__' :
     main()

wxpython类似TK中的label frame实现