- 浏览: 2541802 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
wxpython入门(四)基础构建
参考书籍
http://wiki.woodpecker.org.cn/moin/WxPythonInAction
第六章 使用基本的建造部件
暂时略过
第七章 使用基本的控件工作
显示文本
wx.StaticText,examples:
import wx
class StaticTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Static Text Example',size=(400, 300))
panel = wx.Panel(self, -1)
# 这是一个基本的静态文本
wx.StaticText(panel,-1,"This is an example of static text",(100, 10))
# 指定了前景色和背景色的静态文本
rev = wx.StaticText(panel,-1,"Static Text With Reversed Colors",(100, 30))
rev.SetForegroundColour('white')
rev.SetBackgroundColour('black')
# 指定居中对齐的的静态文本
center = wx.StaticText(panel,-1,"align center",(100, 50),(160, -1), wx.ALIGN_CENTER)
center.SetForegroundColour('white')
center.SetBackgroundColour('black')
# 指定右对齐的静态文本
right = wx.StaticText(panel,-1,"align right",(100, 70),(160, -1), wx.ALIGN_RIGHT)
right.SetForegroundColour('white')
right.SetBackgroundColour('black')
# 指定新字体的静态文本
str = "You can also change the font."
text = wx.StaticText(panel, -1, str, (20, 100))
font = wx.Font(18, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)
text.SetFont(font)
# 显示多行文本
wx.StaticText(panel, -1, "Your text\ncan be split\n"
"over multiple lines\n\neven blank ones", (20,150))
#显示对齐的多行文本
wx.StaticText(panel, -1, "Multi-line text\ncan also\n"
"be right aligned\n\neven with a blank", (220,150),
style=wx.ALIGN_RIGHT)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = StaticTextFrame()
frame.Show()
app.MainLoop()
wx.StaticText的构造函数:
wx.StaticText(parent, id, label, pos=wx.DefaultPosition,size=wx.DefaultSize, style=0, name="staticText")
wx.StaticText的样式:
wx.ALIGN_CENTER:静态文本位于静态文本控件的中心。
wx.ALIGN_LEFT:文本在窗口部件中左对齐。这是默认的样式。
wx.ALIGN_RIGHT:文本在窗口部件中右对齐。
wx.ST_NO_AUTORESIZE:如果使用了这个样式,那么在使用了SetLabel()改变文本之后,静态文本控件不将自我调整尺寸。你应结合使用一个居中或右对齐的控件来保持对齐。
用户输入文本
wx.TextCtrl,examples:
import wx
class TextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Text Entry Example',size=(300, 100))
panel = wx.Panel(self, -1)
basicLabel = wx.StaticText(panel,-1,"Basic Control:")
basicText = wx.TextCtrl(panel,-1,"I've entered some text!",size=(175, -1))
basicText.SetInsertionPoint(0)
pwdLabel = wx.StaticText(panel, -1, "Password:")
pwdText = wx.TextCtrl(panel,-1,"password",size=(175, -1),style=wx.TE_PASSWORD)
sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
sizer.AddMany([basicLabel, basicText, pwdLabel, pwdText])
panel.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = TextFrame()
frame.Show()
app.MainLoop()
wx.TextCtrl类的构造函数:
wx.TextCtrl(parent, id, value = "", pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, validator=wx.DefaultValidator name=wx.TextCtrlNameStr)
单行wx.TextCtrl的样式:
wx.TE_CENTER:控件中的文本居中。
wx.TE_LEFT:控件中的文本左对齐。默认行为。
wx.TE_NOHIDESEL:文本始终高亮显示,只适用于Windows。
wx.TE_PASSWORD:不显示所键入的文本,代替以星号显示。
wx.TE_PROCESS_ENTER:如果使用了这个样式,那么当用户在控件内按下回车键时,一个文本输入事件被 触发。否则,按键事件内在的由该文本控件或该对话框管理。
wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在Tab键按下时创建(一般意味一个制表符将被插入文本)。否则,tab由对话框来管理,通常是控件间的切换。
wx.TE_READONLY:文本控件为只读,用户不能修改其中的文本。
wx.TE_RIGHT:控件中的文本右对齐。
一个多行或富文本控件
可以使用wx.TE_MULTILINE样式标记创建一个多行文本控件,examples:
import wx
class TextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Text Entry Example',size=(300, 250))
panel = wx.Panel(self,-1)
multiLabel = wx.StaticText(panel,-1,"Multi-line")
multiText = wx.TextCtrl(panel,-1,
"Here is a looooooooooooooong line of text set in the control.\n\n"
"See that it wrapped, and that this line is after a blank",
size=(200, 100), style=wx.TE_MULTILINE) #创建一个文本控件
multiText.SetInsertionPoint(0) #设置插入点
richLabel = wx.StaticText(panel, -1, "Rich Text")
richText = wx.TextCtrl(panel, -1,
"If supported by the native control, this is reversed, and this is a different font.",
size=(200, 100), style=wx.TE_MULTILINE|wx.TE_RICH2) #创建丰富文本控件
richText.SetInsertionPoint(0)
richText.SetStyle(44, 52, wx.TextAttr("white", "black")) #设置文本样式
points = richText.GetFont().GetPointSize()
f = wx.Font(points + 3, wx.ROMAN, wx.ITALIC, wx.BOLD, True) #创建一个字体
richText.SetStyle(68,82,wx.TextAttr("blue",wx.NullColour,f)) #用新字体设置样式
sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
sizer.AddMany([multiLabel, multiText, richLabel, richText])
panel.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = TextFrame()
frame.Show()
app.MainLoop()
除了wx.TE_MULTILINE,还有另外的样式标记,它们只在一个多行或丰富文本控件的上下文中有意义:
wx.HSCROLL:如果文本控件是多行的,并且如果该样式被声明了,那么长的行将不会自动换行,并显示水平滚动条。该选项在GTK+中被忽略。
wx.TE_AUTO_URL:如果丰富文本选项被设置并且平台支持的话,那么当用户的鼠标位于文本中的一个URL上或在该URL上敲击时,这个样式将导致一个事件被生成。
wx.TE_DONTWRAP:wx.HSCROLL的别名。
wx.TE_LINEWRAP:对于太长的行,以字符为界换行。某些操作系统可能会忽略该样式。
wx.TE_MULTILINE:文本控件将显示多行。
wx.TE_RICH:用于Windows下,丰富文本控件用作基本的窗口部件。这允许样式文本的使用。
wx.TE_RICH2:用于Windows下,把最新版本的丰富文本控件用作基本的窗口部件。
wx.TE_WORDWRAP:对于太长的行,以单词为界换行。许多操作系统会忽略该样式。
上面这些样式可以组合使用,所以上面例子中的多行丰富文本控件使用wx.TE_MULTILINE | wx.TE_RICH2来声明。
wx.TextCtrl窗口部件中的文本样式是类wx.TextAttr的实例。wx.TextAttr实例的属性有文本颜色、背景色、和字体,它们都能够在构造函数中被指定:
wx.TextAttr(colText, colBack=wx.NullColor, font=wx.NullFont)
创建一个字体
wx.Font(pointSize, family, style, weight, underline=False, faceName="", encoding=wx.FONTENCODING_DEFAULT)
字体样式:
wx.DECORATIVE:一个正式的,老的英文样式字体。
wx.DEFAULT:系统默认字体。
wx.MODERN:一个单间隔(固定字符间距)字体。
wx.ROMAN:serif字体,通常类似于Times New Roman。
wx.SCRIPT:手写体或草写体
wx.SWISS:sans-serif字体,通常类似于Helvetica或Arial
响应文本事件:
frame.Bind(wx.EVT_TEXT, frame.OnText, text)
事件类型:
EVT_TEXT:当控件中的文本改变时产生该事件。文本因用户的输入或在程序中使用SetValue()而被改变,都要产生该事件。
EVT_TEXT_ENTER:当用户在一个wx.TE_PROCESS_ENTER样式的文本控件中按下了回车键时,产生该事件。
EVT_TEXT_URL:如果在Windows系统上,wx.TE_RICH或wx.TE_RICH2样式被设置了,并且wx.TE_AUTO_URL样式也被设置了,那么当在文本控件内的URL上发生了一个鼠标事件时,该事件被触发。
EVT_TEXT_MAXLEN:如果使用SetMaxLength()指定了该控件的最大长度,那么当用户试图输入更长的字符串时,该事件被触发。你可能会用这个,例如,这时给用户显示一个警告消息。
使用按钮工作
简单按钮,examples:
import wx
class ButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Button Example',size=(300, 100))
panel = wx.Panel(self,-1)
self.num = 0
self.button = wx.Button(panel, -1, "Hello", pos=(50, 20))
self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
self.button.SetDefault()
def OnClick(self, event):
if self.num == 0:
self.num = 1
self.button.SetLabel("Clicked")
else:
self.num = 0
self.button.SetLabel("Hello")
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ButtonFrame()
frame.Show()
app.MainLoop()
wx.Button的构造函数:
wx.Button(parent, id, label, pos, size=wxDefaultSize, style=0, validator, name="button")
位图按钮(暂时略过)
通用按钮,examples:
import wx
import wx.lib.buttons as buttons
class GenericButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'ButtonExample',size=(500, 350))
panel = wx.Panel(self, -1)
sizer = wx.FlexGridSizer(1, 3, 20, 20)
b = wx.Button(panel, -1, "A wx.Button")
b.SetDefault()
sizer.Add(b)
b = buttons.GenButton(panel, -1, 'Genric Button')#基本的通用按钮
sizer.Add(b)
b = buttons.GenButton(panel, -1, 'disabled Generic')#无效的通用按钮
b.Enable(False)
sizer.Add(b)
b = buttons.GenButton(panel, -1, 'bigger')#自定义尺寸和颜色的按钮
b.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.BOLD, False))
b.SetBezelWidth(5)
b.SetBackgroundColour("Navy")
b.SetForegroundColour("white")
b.SetToolTipString("This is a BIG button...")
sizer.Add(b)
b = buttons.GenToggleButton(panel, -1, "Toggle Button")#通用开关按钮
sizer.Add(b)
panel.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = GenericButtonFrame()
frame.Show()
app.MainLoop()
滑块功能
wx.Slider,examples:
import wx
class SliderFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Slider Example',size=(300, 350))
panel = wx.Panel(self,-1)
self.count = 0
slider = wx.Slider(panel,100,25,1,100,pos=(10,10),size=(250,-1),
style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
slider.SetTickFreq(5, 1)
slider = wx.Slider(panel,100,25,1,100,pos=(125,70),size=(-1, 250),
style=wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
slider.SetTickFreq(20, 1)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = SliderFrame()
frame.Show()
app.MainLoop()
wx.Slider类构造函数:
wx.Slider(parent, id, value, minValue, maxValue, pos=wxDefaultPosition, size=wx.DefaultSize, style=wx.SL_HORIZONTAL, validator=wx.DefaultValidator, name="slider")
wx.Slider的样式:
wx.SL_AUTOTICKS:如果设置这个样式,则滑块将显示刻度。刻度间的间隔通过SetTickFreq方法来控制。
wx.SL_HORIZONTAL:水平滑块。这是默认值。
wx.SL_LABELS:如果设置这个样式,那么滑块将显示两头的值和滑块的当前只读值。有些平台可能不会显示当前值。
wx.SL_LEFT:用于垂直滑块,刻度位于滑块的左边。
wx.SL_RIGHT:用于垂直滑块,刻度位于滑块的右边。
wx.SL_TOP:用于水平滑块,刻度位于滑块的上部。
wx.SL_VERTICAL:垂直滑块。
微调控制器
wx.SpinCtrl,examples:
import wx
class SpinnerFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Spinner Example',size=(100, 100))
panel = wx.Panel(self,-1)
sc = wx.SpinCtrl(panel, -1, "", (30, 20), (80, -1))
sc.SetRange(1,100)
sc.SetValue(5)
if __name__ == '__main__':
app = wx.PySimpleApp()
SpinnerFrame().Show()
app.MainLoop()
构造函数:
wx.SpinCtrl(parent, id=-1, value=wx.EmptyString, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.SP_ARROW_KEYS, min=0, max=100, initial=0, name="wxSpinCtrl")
参数value是虚设的。使用initial参数来设置该控件的值,并使用min和max来设置该控件的范围。
你可以使用SetRange(minVal, maxVal) 和 SetValue(value)方法来设置范围和值。SetValue()函数要求一个字符串或一个整数。要得到值,使用方法:GetValue()(它返回一个整数), GetMin(), 和 GetMax()。
生成进度条
wx.Gauge,examples:
import wx
class GaugeFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Gauge Example',size=(350, 150))
panel = wx.Panel(self, -1)
self.count = 0
self.gauge = wx.Gauge(panel, -1, 50, (20, 50), (250, 25))
self.gauge.SetBezelFace(3)
self.gauge.SetShadowWidth(3)
self.Bind(wx.EVT_IDLE, self.OnIdle)
def OnIdle(self, event):
self.count = self.count + 1
if self.count == 50:
self.count = 0
self.gauge.SetValue(self.count)
if __name__ == '__main__':
app = wx.PySimpleApp()
GaugeFrame().Show()
app.MainLoop()
wx.Gauge的构造函数:
wx.Gauge(parent, id, range, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.GA_HORIZONTAL, validator=wx.DefaultValidator, name="gauge")
range来指定数字值时,该值代表标尺的上限,而下限总是0。默认样式wx.GA_HORIZONTAL提供了一个水平条。要将它旋转90度,使用wx.GA_VERTICAL样式。
复选框
wx.CheckBox,examples:
import wx
class CheckBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Checkbox Example',size=(150, 200))
panel = wx.Panel(self,-1)
wx.CheckBox(panel, -1, "Alpha", (35, 40), (150, 20))
wx.CheckBox(panel, -1, "Beta", (35, 60), (150, 20))
wx.CheckBox(panel, -1, "Gamma", (35, 80), (150, 20))
if __name__ == '__main__':
app = wx.PySimpleApp()
CheckBoxFrame().Show()
app.MainLoop()
wx.CheckBox构造函数:
wx.CheckBox(parent, id, label, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, name="checkBox")
复选框没有样式标记,但是它们产生属于自己的独一无二的命令事件:EVT_CHECKBOX。wx.CheckBox的开关状态可以使用GetValue()和SetValue(state)方法来访问,并且其值是一个布尔值。IsChecked()方法等同于GetValue()方法,只是为了让代码看起来更易明白。
单选按钮
wx.RadioButton,examples:
import wx
class RadioButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Radio Example',size=(200, 200))
panel = wx.Panel(self,-1)
#创建单选按钮
radio1 = wx.RadioButton(panel, -1, "Elmo", pos=(20, 50), style=wx.RB_GROUP)
radio2 = wx.RadioButton(panel, -1, "Ernie", pos=(20, 80))
radio3 = wx.RadioButton(panel, -1, "Bert", pos=(20, 110))
#创建文本控件
text1 = wx.TextCtrl(panel, -1, "", pos=(80, 50))
text2 = wx.TextCtrl(panel, -1, "", pos=(80, 80))
text3 = wx.TextCtrl(panel, -1, "", pos=(80, 110))
self.texts = {"Elmo": text1, "Ernie": text2, "Bert": text3}#连接按钮和文本
for eachText in [text2, text3]:
eachText.Enable(False)
for eachRadio in [radio1, radio2, radio3]:#绑定事件
self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, eachRadio)
self.selectedText = text1
def OnRadio(self, event):#事件处理器
if self.selectedText:
self.selectedText.Enable(False)
radioSelected = event.GetEventObject()
text = self.texts[radioSelected.GetLabel()]
text.Enable(True)
self.selectedText = text
if __name__ == '__main__':
app = wx.PySimpleApp()
RadioButtonFrame().Show()
app.MainLoop()
wx.RadioButton构造函数:
wx.RadioButton(parent, id, label, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, validator=wx.DefaultValidator, name="radioButton")
wx.RB_GROUP样式声明该按钮位于一组单选按钮开头。一组单选按钮的定义是很重要的,因为它控制开关行为。当组中的一个按钮被选中时,先前被选中的按钮被切换到未选中状态。在一个单选按钮使用wx.RB_GROUP被创建后,所有后来的被添加到相同父窗口部件中的单选按钮都被添加到同一组,直到另一单选按钮使用wx.RB_GROUP被创建,并开始下一个组。
wx.RadioBox类让你能够创建一个单一的对象,该对象包含了完整的组,examples:
import wx
class RadioBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Radio Box Example',size=(350, 200))
panel = wx.Panel(self,-1)
sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
'six', 'seven', 'eight']
wx.RadioBox(panel,-1,"A Radio Box",(10, 10),wx.DefaultSize,sampleList,2,
wx.RA_SPECIFY_COLS)
wx.RadioBox(panel, -1, "Another Box", (150, 10), wx.DefaultSize,
sampleList, 3, wx.RA_SPECIFY_COLS | wx.NO_BORDER)
if __name__ == '__main__':
app = wx.PySimpleApp()
RadioBoxFrame().Show()
app.MainLoop()
wx.RadioBox的构造函数比简单的单选按钮更复杂:
wx.RadioBox(parent, id, label, pos=wx.DefaultPosition,
size=wxDefaultSize, choices=None, majorDimension=0,
style=wx.RA_SPECIFY_COLS, validator=wx.DefaultValidator,
name="radioBox")
列表框
wx.ListBox,examples:
import wx
class ListBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'List Box Example',size=(250, 200))
panel = wx.Panel(self, -1)
sampleList = ['zero','one','two','three','four','five','six','seven','eight',
'nine','ten','eleven','twelve','thirteen','fourteen']
listBox = wx.ListBox(panel,-1,(20,20),(80,120),sampleList,wx.LB_SINGLE)
listBox.SetSelection(3)
if __name__ == '__main__':
app = wx.PySimpleApp()
ListBoxFrame().Show()
app.MainLoop()
wx.ListBox的构造函数:
wx.ListBox(parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, choices=None, style=0, validator=wx.DefaultValidator, name="listBox")
列表框的选择类型样式:
wx.LB_EXTENDED:用户可以通过使用shift并敲击鼠标来选择一定范围内的连续的选项,或使用等同功能的按键。
wx.LB_MULTIPLE:用户可以一次选择多个选项(选项可以是不连续的)。实际上,在这种情况下,列表框的行为就像是一组复选框。
wx.LB_SINGLE:用户一次只能选一个选项。实际上,在这种情况下,列表框的行为就像是一组单选按钮。
列表框的滚动条类型样式:
wx.LB_ALWAYS_SB:列表框将始终显示一个垂直的滚动条,不管有没有必要。
wx.LB_HSCROLL:如果本地控支持,那么列表框在选择项太多时,将创建一个水平滚动条。
wx.LB_HSCROLL:列表框只在需要的时候显示一个垂直的滚动条。这是默认样式。
还有一个样式wx.LB_SORT,它使得列表中的元素按字母顺序排序。
下拉选择框
wx.Choice,examples:
import wx
class ChoiceFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Choice Example',size=(250, 200))
panel = wx.Panel(self,-1)
sampleList = ['zero','one','two','three','four','five','six','seven','eight']
wx.StaticText(panel, -1, "Select one:", (15, 20))
wx.Choice(panel, -1, (85, 18), choices=sampleList)
if __name__ == '__main__':
app = wx.PySimpleApp()
ChoiceFrame().Show()
app.MainLoop()
wx.Choice的构造函数:
wx.Choice(parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, choices=None, style=0, validator=wx.DefaultValidator, name="choice")
文本域与列表合并
wx.ComboBox,examples:
import wx
class ComboBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Combo Box Example',
size=(350, 300))
panel = wx.Panel(self, -1)
sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
'six', 'seven', 'eight']
wx.StaticText(panel, -1, "Select one:", (15, 15))
wx.ComboBox(panel, -1, "default value", (15, 30), wx.DefaultSize,
sampleList, wx.CB_DROPDOWN)
wx.ComboBox(panel, -1, "default value", (150, 30), wx.DefaultSize,
sampleList, wx.CB_SIMPLE)
if __name__ == '__main__':
app = wx.PySimpleApp()
ComboBoxFrame().Show()
app.MainLoop()
wx.ComboBox的构造函数:
wx.ComboBox(parent, id, value="", pos=wx.DefaultPosition,size=wx.DefaultSize, choices, style=0,
validator=wx.DefaultValidator, name="comboBox")
参考书籍
http://wiki.woodpecker.org.cn/moin/WxPythonInAction
第六章 使用基本的建造部件
暂时略过
第七章 使用基本的控件工作
显示文本
wx.StaticText,examples:
import wx
class StaticTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Static Text Example',size=(400, 300))
panel = wx.Panel(self, -1)
# 这是一个基本的静态文本
wx.StaticText(panel,-1,"This is an example of static text",(100, 10))
# 指定了前景色和背景色的静态文本
rev = wx.StaticText(panel,-1,"Static Text With Reversed Colors",(100, 30))
rev.SetForegroundColour('white')
rev.SetBackgroundColour('black')
# 指定居中对齐的的静态文本
center = wx.StaticText(panel,-1,"align center",(100, 50),(160, -1), wx.ALIGN_CENTER)
center.SetForegroundColour('white')
center.SetBackgroundColour('black')
# 指定右对齐的静态文本
right = wx.StaticText(panel,-1,"align right",(100, 70),(160, -1), wx.ALIGN_RIGHT)
right.SetForegroundColour('white')
right.SetBackgroundColour('black')
# 指定新字体的静态文本
str = "You can also change the font."
text = wx.StaticText(panel, -1, str, (20, 100))
font = wx.Font(18, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)
text.SetFont(font)
# 显示多行文本
wx.StaticText(panel, -1, "Your text\ncan be split\n"
"over multiple lines\n\neven blank ones", (20,150))
#显示对齐的多行文本
wx.StaticText(panel, -1, "Multi-line text\ncan also\n"
"be right aligned\n\neven with a blank", (220,150),
style=wx.ALIGN_RIGHT)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = StaticTextFrame()
frame.Show()
app.MainLoop()
wx.StaticText的构造函数:
wx.StaticText(parent, id, label, pos=wx.DefaultPosition,size=wx.DefaultSize, style=0, name="staticText")
wx.StaticText的样式:
wx.ALIGN_CENTER:静态文本位于静态文本控件的中心。
wx.ALIGN_LEFT:文本在窗口部件中左对齐。这是默认的样式。
wx.ALIGN_RIGHT:文本在窗口部件中右对齐。
wx.ST_NO_AUTORESIZE:如果使用了这个样式,那么在使用了SetLabel()改变文本之后,静态文本控件不将自我调整尺寸。你应结合使用一个居中或右对齐的控件来保持对齐。
用户输入文本
wx.TextCtrl,examples:
import wx
class TextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Text Entry Example',size=(300, 100))
panel = wx.Panel(self, -1)
basicLabel = wx.StaticText(panel,-1,"Basic Control:")
basicText = wx.TextCtrl(panel,-1,"I've entered some text!",size=(175, -1))
basicText.SetInsertionPoint(0)
pwdLabel = wx.StaticText(panel, -1, "Password:")
pwdText = wx.TextCtrl(panel,-1,"password",size=(175, -1),style=wx.TE_PASSWORD)
sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
sizer.AddMany([basicLabel, basicText, pwdLabel, pwdText])
panel.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = TextFrame()
frame.Show()
app.MainLoop()
wx.TextCtrl类的构造函数:
wx.TextCtrl(parent, id, value = "", pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, validator=wx.DefaultValidator name=wx.TextCtrlNameStr)
单行wx.TextCtrl的样式:
wx.TE_CENTER:控件中的文本居中。
wx.TE_LEFT:控件中的文本左对齐。默认行为。
wx.TE_NOHIDESEL:文本始终高亮显示,只适用于Windows。
wx.TE_PASSWORD:不显示所键入的文本,代替以星号显示。
wx.TE_PROCESS_ENTER:如果使用了这个样式,那么当用户在控件内按下回车键时,一个文本输入事件被 触发。否则,按键事件内在的由该文本控件或该对话框管理。
wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在Tab键按下时创建(一般意味一个制表符将被插入文本)。否则,tab由对话框来管理,通常是控件间的切换。
wx.TE_READONLY:文本控件为只读,用户不能修改其中的文本。
wx.TE_RIGHT:控件中的文本右对齐。
一个多行或富文本控件
可以使用wx.TE_MULTILINE样式标记创建一个多行文本控件,examples:
import wx
class TextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Text Entry Example',size=(300, 250))
panel = wx.Panel(self,-1)
multiLabel = wx.StaticText(panel,-1,"Multi-line")
multiText = wx.TextCtrl(panel,-1,
"Here is a looooooooooooooong line of text set in the control.\n\n"
"See that it wrapped, and that this line is after a blank",
size=(200, 100), style=wx.TE_MULTILINE) #创建一个文本控件
multiText.SetInsertionPoint(0) #设置插入点
richLabel = wx.StaticText(panel, -1, "Rich Text")
richText = wx.TextCtrl(panel, -1,
"If supported by the native control, this is reversed, and this is a different font.",
size=(200, 100), style=wx.TE_MULTILINE|wx.TE_RICH2) #创建丰富文本控件
richText.SetInsertionPoint(0)
richText.SetStyle(44, 52, wx.TextAttr("white", "black")) #设置文本样式
points = richText.GetFont().GetPointSize()
f = wx.Font(points + 3, wx.ROMAN, wx.ITALIC, wx.BOLD, True) #创建一个字体
richText.SetStyle(68,82,wx.TextAttr("blue",wx.NullColour,f)) #用新字体设置样式
sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
sizer.AddMany([multiLabel, multiText, richLabel, richText])
panel.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = TextFrame()
frame.Show()
app.MainLoop()
除了wx.TE_MULTILINE,还有另外的样式标记,它们只在一个多行或丰富文本控件的上下文中有意义:
wx.HSCROLL:如果文本控件是多行的,并且如果该样式被声明了,那么长的行将不会自动换行,并显示水平滚动条。该选项在GTK+中被忽略。
wx.TE_AUTO_URL:如果丰富文本选项被设置并且平台支持的话,那么当用户的鼠标位于文本中的一个URL上或在该URL上敲击时,这个样式将导致一个事件被生成。
wx.TE_DONTWRAP:wx.HSCROLL的别名。
wx.TE_LINEWRAP:对于太长的行,以字符为界换行。某些操作系统可能会忽略该样式。
wx.TE_MULTILINE:文本控件将显示多行。
wx.TE_RICH:用于Windows下,丰富文本控件用作基本的窗口部件。这允许样式文本的使用。
wx.TE_RICH2:用于Windows下,把最新版本的丰富文本控件用作基本的窗口部件。
wx.TE_WORDWRAP:对于太长的行,以单词为界换行。许多操作系统会忽略该样式。
上面这些样式可以组合使用,所以上面例子中的多行丰富文本控件使用wx.TE_MULTILINE | wx.TE_RICH2来声明。
wx.TextCtrl窗口部件中的文本样式是类wx.TextAttr的实例。wx.TextAttr实例的属性有文本颜色、背景色、和字体,它们都能够在构造函数中被指定:
wx.TextAttr(colText, colBack=wx.NullColor, font=wx.NullFont)
创建一个字体
wx.Font(pointSize, family, style, weight, underline=False, faceName="", encoding=wx.FONTENCODING_DEFAULT)
字体样式:
wx.DECORATIVE:一个正式的,老的英文样式字体。
wx.DEFAULT:系统默认字体。
wx.MODERN:一个单间隔(固定字符间距)字体。
wx.ROMAN:serif字体,通常类似于Times New Roman。
wx.SCRIPT:手写体或草写体
wx.SWISS:sans-serif字体,通常类似于Helvetica或Arial
响应文本事件:
frame.Bind(wx.EVT_TEXT, frame.OnText, text)
事件类型:
EVT_TEXT:当控件中的文本改变时产生该事件。文本因用户的输入或在程序中使用SetValue()而被改变,都要产生该事件。
EVT_TEXT_ENTER:当用户在一个wx.TE_PROCESS_ENTER样式的文本控件中按下了回车键时,产生该事件。
EVT_TEXT_URL:如果在Windows系统上,wx.TE_RICH或wx.TE_RICH2样式被设置了,并且wx.TE_AUTO_URL样式也被设置了,那么当在文本控件内的URL上发生了一个鼠标事件时,该事件被触发。
EVT_TEXT_MAXLEN:如果使用SetMaxLength()指定了该控件的最大长度,那么当用户试图输入更长的字符串时,该事件被触发。你可能会用这个,例如,这时给用户显示一个警告消息。
使用按钮工作
简单按钮,examples:
import wx
class ButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Button Example',size=(300, 100))
panel = wx.Panel(self,-1)
self.num = 0
self.button = wx.Button(panel, -1, "Hello", pos=(50, 20))
self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
self.button.SetDefault()
def OnClick(self, event):
if self.num == 0:
self.num = 1
self.button.SetLabel("Clicked")
else:
self.num = 0
self.button.SetLabel("Hello")
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ButtonFrame()
frame.Show()
app.MainLoop()
wx.Button的构造函数:
wx.Button(parent, id, label, pos, size=wxDefaultSize, style=0, validator, name="button")
位图按钮(暂时略过)
通用按钮,examples:
import wx
import wx.lib.buttons as buttons
class GenericButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'ButtonExample',size=(500, 350))
panel = wx.Panel(self, -1)
sizer = wx.FlexGridSizer(1, 3, 20, 20)
b = wx.Button(panel, -1, "A wx.Button")
b.SetDefault()
sizer.Add(b)
b = buttons.GenButton(panel, -1, 'Genric Button')#基本的通用按钮
sizer.Add(b)
b = buttons.GenButton(panel, -1, 'disabled Generic')#无效的通用按钮
b.Enable(False)
sizer.Add(b)
b = buttons.GenButton(panel, -1, 'bigger')#自定义尺寸和颜色的按钮
b.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.BOLD, False))
b.SetBezelWidth(5)
b.SetBackgroundColour("Navy")
b.SetForegroundColour("white")
b.SetToolTipString("This is a BIG button...")
sizer.Add(b)
b = buttons.GenToggleButton(panel, -1, "Toggle Button")#通用开关按钮
sizer.Add(b)
panel.SetSizer(sizer)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = GenericButtonFrame()
frame.Show()
app.MainLoop()
滑块功能
wx.Slider,examples:
import wx
class SliderFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Slider Example',size=(300, 350))
panel = wx.Panel(self,-1)
self.count = 0
slider = wx.Slider(panel,100,25,1,100,pos=(10,10),size=(250,-1),
style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
slider.SetTickFreq(5, 1)
slider = wx.Slider(panel,100,25,1,100,pos=(125,70),size=(-1, 250),
style=wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
slider.SetTickFreq(20, 1)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = SliderFrame()
frame.Show()
app.MainLoop()
wx.Slider类构造函数:
wx.Slider(parent, id, value, minValue, maxValue, pos=wxDefaultPosition, size=wx.DefaultSize, style=wx.SL_HORIZONTAL, validator=wx.DefaultValidator, name="slider")
wx.Slider的样式:
wx.SL_AUTOTICKS:如果设置这个样式,则滑块将显示刻度。刻度间的间隔通过SetTickFreq方法来控制。
wx.SL_HORIZONTAL:水平滑块。这是默认值。
wx.SL_LABELS:如果设置这个样式,那么滑块将显示两头的值和滑块的当前只读值。有些平台可能不会显示当前值。
wx.SL_LEFT:用于垂直滑块,刻度位于滑块的左边。
wx.SL_RIGHT:用于垂直滑块,刻度位于滑块的右边。
wx.SL_TOP:用于水平滑块,刻度位于滑块的上部。
wx.SL_VERTICAL:垂直滑块。
微调控制器
wx.SpinCtrl,examples:
import wx
class SpinnerFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Spinner Example',size=(100, 100))
panel = wx.Panel(self,-1)
sc = wx.SpinCtrl(panel, -1, "", (30, 20), (80, -1))
sc.SetRange(1,100)
sc.SetValue(5)
if __name__ == '__main__':
app = wx.PySimpleApp()
SpinnerFrame().Show()
app.MainLoop()
构造函数:
wx.SpinCtrl(parent, id=-1, value=wx.EmptyString, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.SP_ARROW_KEYS, min=0, max=100, initial=0, name="wxSpinCtrl")
参数value是虚设的。使用initial参数来设置该控件的值,并使用min和max来设置该控件的范围。
你可以使用SetRange(minVal, maxVal) 和 SetValue(value)方法来设置范围和值。SetValue()函数要求一个字符串或一个整数。要得到值,使用方法:GetValue()(它返回一个整数), GetMin(), 和 GetMax()。
生成进度条
wx.Gauge,examples:
import wx
class GaugeFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Gauge Example',size=(350, 150))
panel = wx.Panel(self, -1)
self.count = 0
self.gauge = wx.Gauge(panel, -1, 50, (20, 50), (250, 25))
self.gauge.SetBezelFace(3)
self.gauge.SetShadowWidth(3)
self.Bind(wx.EVT_IDLE, self.OnIdle)
def OnIdle(self, event):
self.count = self.count + 1
if self.count == 50:
self.count = 0
self.gauge.SetValue(self.count)
if __name__ == '__main__':
app = wx.PySimpleApp()
GaugeFrame().Show()
app.MainLoop()
wx.Gauge的构造函数:
wx.Gauge(parent, id, range, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.GA_HORIZONTAL, validator=wx.DefaultValidator, name="gauge")
range来指定数字值时,该值代表标尺的上限,而下限总是0。默认样式wx.GA_HORIZONTAL提供了一个水平条。要将它旋转90度,使用wx.GA_VERTICAL样式。
复选框
wx.CheckBox,examples:
import wx
class CheckBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Checkbox Example',size=(150, 200))
panel = wx.Panel(self,-1)
wx.CheckBox(panel, -1, "Alpha", (35, 40), (150, 20))
wx.CheckBox(panel, -1, "Beta", (35, 60), (150, 20))
wx.CheckBox(panel, -1, "Gamma", (35, 80), (150, 20))
if __name__ == '__main__':
app = wx.PySimpleApp()
CheckBoxFrame().Show()
app.MainLoop()
wx.CheckBox构造函数:
wx.CheckBox(parent, id, label, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, name="checkBox")
复选框没有样式标记,但是它们产生属于自己的独一无二的命令事件:EVT_CHECKBOX。wx.CheckBox的开关状态可以使用GetValue()和SetValue(state)方法来访问,并且其值是一个布尔值。IsChecked()方法等同于GetValue()方法,只是为了让代码看起来更易明白。
单选按钮
wx.RadioButton,examples:
import wx
class RadioButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Radio Example',size=(200, 200))
panel = wx.Panel(self,-1)
#创建单选按钮
radio1 = wx.RadioButton(panel, -1, "Elmo", pos=(20, 50), style=wx.RB_GROUP)
radio2 = wx.RadioButton(panel, -1, "Ernie", pos=(20, 80))
radio3 = wx.RadioButton(panel, -1, "Bert", pos=(20, 110))
#创建文本控件
text1 = wx.TextCtrl(panel, -1, "", pos=(80, 50))
text2 = wx.TextCtrl(panel, -1, "", pos=(80, 80))
text3 = wx.TextCtrl(panel, -1, "", pos=(80, 110))
self.texts = {"Elmo": text1, "Ernie": text2, "Bert": text3}#连接按钮和文本
for eachText in [text2, text3]:
eachText.Enable(False)
for eachRadio in [radio1, radio2, radio3]:#绑定事件
self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, eachRadio)
self.selectedText = text1
def OnRadio(self, event):#事件处理器
if self.selectedText:
self.selectedText.Enable(False)
radioSelected = event.GetEventObject()
text = self.texts[radioSelected.GetLabel()]
text.Enable(True)
self.selectedText = text
if __name__ == '__main__':
app = wx.PySimpleApp()
RadioButtonFrame().Show()
app.MainLoop()
wx.RadioButton构造函数:
wx.RadioButton(parent, id, label, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, validator=wx.DefaultValidator, name="radioButton")
wx.RB_GROUP样式声明该按钮位于一组单选按钮开头。一组单选按钮的定义是很重要的,因为它控制开关行为。当组中的一个按钮被选中时,先前被选中的按钮被切换到未选中状态。在一个单选按钮使用wx.RB_GROUP被创建后,所有后来的被添加到相同父窗口部件中的单选按钮都被添加到同一组,直到另一单选按钮使用wx.RB_GROUP被创建,并开始下一个组。
wx.RadioBox类让你能够创建一个单一的对象,该对象包含了完整的组,examples:
import wx
class RadioBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Radio Box Example',size=(350, 200))
panel = wx.Panel(self,-1)
sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
'six', 'seven', 'eight']
wx.RadioBox(panel,-1,"A Radio Box",(10, 10),wx.DefaultSize,sampleList,2,
wx.RA_SPECIFY_COLS)
wx.RadioBox(panel, -1, "Another Box", (150, 10), wx.DefaultSize,
sampleList, 3, wx.RA_SPECIFY_COLS | wx.NO_BORDER)
if __name__ == '__main__':
app = wx.PySimpleApp()
RadioBoxFrame().Show()
app.MainLoop()
wx.RadioBox的构造函数比简单的单选按钮更复杂:
wx.RadioBox(parent, id, label, pos=wx.DefaultPosition,
size=wxDefaultSize, choices=None, majorDimension=0,
style=wx.RA_SPECIFY_COLS, validator=wx.DefaultValidator,
name="radioBox")
列表框
wx.ListBox,examples:
import wx
class ListBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'List Box Example',size=(250, 200))
panel = wx.Panel(self, -1)
sampleList = ['zero','one','two','three','four','five','six','seven','eight',
'nine','ten','eleven','twelve','thirteen','fourteen']
listBox = wx.ListBox(panel,-1,(20,20),(80,120),sampleList,wx.LB_SINGLE)
listBox.SetSelection(3)
if __name__ == '__main__':
app = wx.PySimpleApp()
ListBoxFrame().Show()
app.MainLoop()
wx.ListBox的构造函数:
wx.ListBox(parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, choices=None, style=0, validator=wx.DefaultValidator, name="listBox")
列表框的选择类型样式:
wx.LB_EXTENDED:用户可以通过使用shift并敲击鼠标来选择一定范围内的连续的选项,或使用等同功能的按键。
wx.LB_MULTIPLE:用户可以一次选择多个选项(选项可以是不连续的)。实际上,在这种情况下,列表框的行为就像是一组复选框。
wx.LB_SINGLE:用户一次只能选一个选项。实际上,在这种情况下,列表框的行为就像是一组单选按钮。
列表框的滚动条类型样式:
wx.LB_ALWAYS_SB:列表框将始终显示一个垂直的滚动条,不管有没有必要。
wx.LB_HSCROLL:如果本地控支持,那么列表框在选择项太多时,将创建一个水平滚动条。
wx.LB_HSCROLL:列表框只在需要的时候显示一个垂直的滚动条。这是默认样式。
还有一个样式wx.LB_SORT,它使得列表中的元素按字母顺序排序。
下拉选择框
wx.Choice,examples:
import wx
class ChoiceFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Choice Example',size=(250, 200))
panel = wx.Panel(self,-1)
sampleList = ['zero','one','two','three','four','five','six','seven','eight']
wx.StaticText(panel, -1, "Select one:", (15, 20))
wx.Choice(panel, -1, (85, 18), choices=sampleList)
if __name__ == '__main__':
app = wx.PySimpleApp()
ChoiceFrame().Show()
app.MainLoop()
wx.Choice的构造函数:
wx.Choice(parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, choices=None, style=0, validator=wx.DefaultValidator, name="choice")
文本域与列表合并
wx.ComboBox,examples:
import wx
class ComboBoxFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Combo Box Example',
size=(350, 300))
panel = wx.Panel(self, -1)
sampleList = ['zero', 'one', 'two', 'three', 'four', 'five',
'six', 'seven', 'eight']
wx.StaticText(panel, -1, "Select one:", (15, 15))
wx.ComboBox(panel, -1, "default value", (15, 30), wx.DefaultSize,
sampleList, wx.CB_DROPDOWN)
wx.ComboBox(panel, -1, "default value", (150, 30), wx.DefaultSize,
sampleList, wx.CB_SIMPLE)
if __name__ == '__main__':
app = wx.PySimpleApp()
ComboBoxFrame().Show()
app.MainLoop()
wx.ComboBox的构造函数:
wx.ComboBox(parent, id, value="", pos=wx.DefaultPosition,size=wx.DefaultSize, choices, style=0,
validator=wx.DefaultValidator, name="comboBox")
发表评论
-
NodeJS12 and Zlib
2020-04-01 07:44 468NodeJS12 and Zlib It works as ... -
Traefik 2020(1)Introduction and Installation
2020-03-29 13:52 328Traefik 2020(1)Introduction and ... -
Private Registry 2020(1)No auth in registry Nginx AUTH for UI
2020-03-18 00:56 428Private Registry 2020(1)No auth ... -
Buffer in NodeJS 12 and NodeJS 8
2020-02-25 06:43 376Buffer in NodeJS 12 and NodeJS ... -
NodeJS ENV Similar to JENV and PyENV
2020-02-25 05:14 465NodeJS ENV Similar to JENV and ... -
Prometheus HA 2020(3)AlertManager Cluster
2020-02-24 01:47 413Prometheus HA 2020(3)AlertManag ... -
Serverless with NodeJS and TencentCloud 2020(5)CRON and Settings
2020-02-24 01:46 330Serverless with NodeJS and Tenc ... -
GraphQL 2019(3)Connect to MySQL
2020-02-24 01:48 242GraphQL 2019(3)Connect to MySQL ... -
GraphQL 2019(2)GraphQL and Deploy to Tencent Cloud
2020-02-24 01:48 443GraphQL 2019(2)GraphQL and Depl ... -
GraphQL 2019(1)Apollo Basic
2020-02-19 01:36 320GraphQL 2019(1)Apollo Basic Cl ... -
Serverless with NodeJS and TencentCloud 2020(4)Multiple Handlers and Running wit
2020-02-19 01:19 306Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(3)Build Tree and Traverse Tree
2020-02-19 01:19 310Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(2)Trigger SCF in SCF
2020-02-19 01:18 285Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(1)Running with Component
2020-02-19 01:17 302Serverless with NodeJS and Tenc ... -
NodeJS MySQL Library and npmjs
2020-02-07 06:21 278NodeJS MySQL Library and npmjs ... -
Python Library 2019(1)requests and aiohttp
2019-12-18 01:12 256Python Library 2019(1)requests ... -
NodeJS Installation 2019
2019-10-20 02:57 565NodeJS Installation 2019 Insta ... -
Monitor Tool 2019(2)Monit on Multiple Instances and Email Alerts
2019-10-18 10:57 256Monitor Tool 2019(2)Monit on Mu ... -
Sqlite Database 2019(1)Sqlite3 Installation and Docker phpsqliteadmin
2019-09-05 11:24 361Sqlite Database 2019(1)Sqlite3 ... -
Supervisor 2019(2)Ubuntu and Multiple Services
2019-08-19 10:53 363Supervisor 2019(2)Ubuntu and Mu ...
相关推荐
通过这样的基础示例,你可以开始理解如何利用wxPython构建更复杂的GUI应用。 总的来说,wxPython为Python开发者提供了强大的GUI开发工具,结合Python的简洁性和可移植性,使得开发者能够快速构建跨平台的应用程序,...
在Python中,我们通常通过创建类来构建GUI应用程序,这些类会继承自wxPython提供的基础类。 在描述中提到的"创建窗口程序"部分,首先需要安装wxPython库,通过在命令行输入`pip install -U wxPython`来完成。然后,...
总之,这份“wxPython中文学习资料”涵盖了从入门到进阶的全面内容,无论你是Python新手还是有一定经验的开发者,都能从中受益。通过深入学习和实践,你可以利用wxPython构建功能强大的、跨平台的GUI应用程序。
第1部分“wxPython入门”中,通过“欢迎来到wxPython”章节,引导读者了解如何开始使用wxPython。最简单的空程序示例展示了如何导入wxPython库,创建应用程序和框架,并进入主事件循环。接着,逐步扩展这个基础程序...
综上所述,《wxPython in Action》这本书系统地介绍了wxPython的基础知识和高级主题,涵盖了从入门到精通所需的所有知识点。无论是初学者还是有一定经验的开发者,都可以从中获益匪浅。通过学习本书,开发者能够掌握...
1. **基础入门**:这部分通常会介绍如何安装wxPython库,设置开发环境,并创建第一个简单的GUI应用。还会讲解基本的控件,如按钮、文本框、标签等,以及布局管理器如何帮助组织这些控件在窗口中的排列。 2. **控件...
- 提供了构建wxPython应用程序所需的基础知识和技术,包括环境配置、基本组件的使用等。 - **第三章:在事件驱动环境中开发** - 讲解了事件驱动编程模型的基本原理,并展示了如何在wxPython中实现事件处理机制。 -...
### wxPython_GUI编程 #### 一、wxPython简介与入门 ...以上就是wxPython入门和一些基础知识的详细介绍。通过学习这些概念,开发者可以更好地掌握如何使用wxPython构建高效且用户友好的GUI应用程序。
书中首先介绍了Python基础和wxPython库的基本概念,帮助读者建立对Python语法和wxPython框架的理解。在这一部分,你可以学习到如何安装wxPython、设置开发环境,并了解wxPython的核心组件和设计模式。 接着,书中的...
**一、wxPython基础知识** 1. **安装与环境配置**:在开始使用wxPython之前,你需要首先在你的Python环境中安装它。这可以通过pip命令完成,例如`pip install wxpython`。确保安装的版本与你的Python版本和操作系统...
#### 一、wxPython入门概览 **1.1 开始wxPython** - **wxPython简介:** wxPython是一个用于Python的GUI开发工具包,它基于wxWidgets C++库,提供了丰富的组件来创建跨平台的应用程序。 - **目标读者:** 本书适合...
对于初学者来说,Python是入门编程的理想选择,而对于经验丰富的开发者,它则提供了丰富的库和框架,可以用于各种复杂的任务,包括构建桌面应用。 接下来,我们聚焦wxPython。wxPython是Python中用于构建GUI应用的...
**wxPython中文文档** `wxPython` 是一个用于创建...总的来说,这三份文档构成了一套完整的wxPython学习资源,涵盖了从入门到进阶的所有关键知识点,帮助你熟练掌握使用wxPython创建美观且功能强大的跨平台应用程序。
1. wxPython入门 - 开始wxPython:文档介绍了如何开始使用wxPython,包括导入wxPython库,了解应用程序和框架的工作方式。 - 创建最小的空的wxPython程序:这是入门wxPython的简单示例,通过创建wx.App的子类,...
9. **示例和教程**:wxPython社区提供了许多示例代码和教程,帮助初学者快速入门,同时也有丰富的第三方库扩展了wxPython的功能。 10. **跨平台开发**:尽管此版本特别针对Windows,但wxPython的跨平台特性意味着...