水平回转平台(wxPython - 基本控件之数据调节框SpinCtrl)
Posted
篇首语:眼前多少难甘事,自古男儿当自强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了水平回转平台(wxPython - 基本控件之数据调节框SpinCtrl)相关的知识,希望对你有一定的参考价值。
水平回转平台(wxPython - 基本控件之数据调节框SpinCtrl)
实战wxPython系列-036
wx.SpinCtrl是wx.TextCtrl和wx.SpinButton控件的组合。当用户点击wx.SpinButton的向上或者向下按钮的时候,wx.TextCtrl中的值将会随之变化。用户也可以直接在wx.TextCtrl中输入想要的值。
一、wx.SpinButton
一个wx.SpinButton有两个小的上下(或左右)箭头按钮。它通常用于文本控件旁边,用于增加或减少值。
wx.SpinButton支持的窗口样式:
- wx.SP_HORIZONTAL:指定水平旋转按钮。
- wx.SP_VERTICAL:指定垂直旋转按钮。
- wx.SP_ARROW_KEYS:用户可以使用方向键来更改数值。
- wx.SP_WRAP:当数值在最小值和最大值处换行。
wx.SpinButton可生成的事件:
- EVT_SPIN:当按下箭头改变旋转按钮值时生成。
- EVT_SPIN_UP:当按左/上箭头改变旋转按钮值时生成。
- EVT_SPIN_DOWN:当按下右/下箭头改变旋转按钮值时生成。
wx.SpinButton常用方法:
- GetIncrement(self):返回spin控件的增量值。
- GetMax(self):返回最大允许值。
- GetMin(self):返回最小允许值。
- GetRange(self):返回允许范围。
- GetValue(self):返回spin按钮的当前值。
- SetIncrement(self, value):设置spin控件的增量值。
- SetMax(self, maxVal):设置最大允许值。
- SetMin(self, minVal):设置最小允许值。
- SetRange(self, min, max):设置允许范围。
- SetValue(self, value):设置spin按钮的当前值。
二、wx.SpinCtrl
wxSpinCtrl将wxTextCtrl和wxSpinButton组合在一个控件中,并显示一个整数。
wx.SpinCtrl支持的窗口样式:
- wx.SP_ARROW_KEYS:用户可以使用方向键来更改数值。
- wx.SP_WRAP:当数值在最小值和最大值处换行。
- wx.TE_PROCESS_ENTER:指示控件应生成wx.EVT_TEXT_ENTER事件。使用这种样式将防止用户在MSW下使用Enter键进行对话框导航(例如激活对话框中的默认按钮)。
- wx.ALIGN_LEFT:与wx.TextCtrl的wx.TE_LEFT相同:文本向左对齐(这是默认值)。
- wx.ALIGN_CENTRE_HORIZONTAL:与wx.TextCtrl的wx.TE_CENTRE相同:文本居中。
- wx.ALIGN_RIGHT:与 wx.TextCtrl的wx.TE_RIGHT相同:文本是右对齐的。
wx.SpinCtrl发出的事件:
- EVT_SPINCTRL:处理wx.EVT_SPINCTRL事件,该事件在spin控件的数值更新时生成。
wx.SpinCtrl常用方法:
- GetBase(self):返回当前使用的进制基数,默认为10。
- GetIncrement(self):返回spin控件的增量值。
- GetMax(self):返回最大允许值。
- GetMin(self):返回最小允许值。
- GetRange(self):返回允许范围。
- GetTextValue(self):返回控件的文本输入部分中的文本。
- GetValue(self):返回spin控件的当前值。
- SetBase(self, base):设置当前使用的进制基数。
- SetIncrement(self, value):设置spin控件的增量值。
- SetMax(self, maxVal):设置最大允许值。
- SetMin(self, minVal):设置最小允许值。
- SetRange(self, minVal, maxVal):设置允许范围。
- SetSelection(self, from_, to_):选择控件文本部分中从(包括)到(不包括)位置之间的文本。
- SetValue (self, text):设置spin控件的当前值。
- SetValue (self, value):设置spin控件的当前值。
三、wx.SpinCtrl演示
#数据调节框(wx.SpinCtrl)import wxclass SampleSpinCtrl(wx.Frame): def __init__(self, *args, **kw): super(SampleSpinCtrl, self).__init__(*args, **kw) self.InitUi() def InitUi(self): #设置标题 self.SetTitle("实战wxPython: SpinCtrl演示") #设置窗口尺寸 self.SetSize(360, 280) panel = wx.Panel(self) sizer = wx.GridBagSizer(5, 5) st1 = wx.StaticText(panel, label="将华氏温度转换为摄氏温度") sizer.Add(st1, pos = (0, 0), span = (1, 2), flag = wx.ALL, border = 15) st2 = wx.StaticText(panel, label = "华氏度:") sizer.Add(st2, pos = (1, 0), flag = wx.ALL | wx.ALIGN_CENTER, border = 15) self.sc = wx.SpinCtrl(panel, value="0") self.sc.SetRange(-459, 1000) sizer.Add(self.sc, pos = (1, 1), flag = wx.ALIGN_CENTER) st3 = wx.StaticText(panel, label="摄氏度:") sizer.Add(st3, pos = (2, 0), flag = wx.ALL | wx.ALIGN_RIGHT, border = 15) self.celsius = wx.StaticText(panel, label="") sizer.Add(self.celsius, pos = (2, 1), flag = wx.ALL, border = 15) computeButton = wx.Button(panel, label="计算") computeButton.SetFocus() sizer.Add(computeButton, pos = (3, 1), flag = wx.ALIGN_RIGHT | wx.TOP, border = 30) closeButton = wx.Button(panel, label="关闭") sizer.Add(closeButton, pos = (3, 2), flag = wx.ALIGN_LEFT | wx.TOP, border = 30) computeButton.Bind(wx.EVT_BUTTON, self.OnCompute) closeButton.Bind(wx.EVT_BUTTON, self.OnClose) panel.SetSizer(sizer) self.Centre() def OnClose(self, e): self.Close(True) def OnCompute(self, e): fahr = self.sc.GetValue() cels = round((fahr - 32) * 5 / 9.0, 2) self.celsius.SetLabel(str(cels))def main(): app = wx.App() sample = SampleSpinCtrl(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()
上面的代码演示了华氏温度转换为摄氏温度,使用wx.SpinCtrl来设置华氏温度。
self.sc = wx.SpinCtrl(panel, value="0")self.sc.SetRange(-459, 1000)
创建初始值为0的wx.SpinCtrl控件。SetRange()方法为控件设置一个取值范围。
def OnCompute(self, e): fahr = self.sc.GetValue() cels = round((fahr - 32) * 5 / 9.0, 2) self.celsius.SetLabel(str(cels))
当单击计算按钮时,OnCompute()方法被调用。在OnCompute()中,我们从spin 控件获取当前值。计算摄氏温度,并将计算出的温度设置显示在一个静态文本控件上。
四、wx.SpinCtrlDouble
wxSpinCtrlDouble将wxTextCtrl和wxSpinButton组合在一个控件中,并显示一个实数。
wx.SpinCtrlDouble支持的窗口样式:
- wx.SP_ARROW_KEYS:用户可以使用方向键来更改数值。
- wx.SP_WRAP:当数值在最小值和最大值处换行。
wx.SpinCtrlDouble发出的事件:
- EVT_SPINCTRLDOUBLE:当spin控件的数值发生变化 (即单击向上/向下旋转按钮时,按下ENTER时,或控件失去焦点且新值与上次不同时) 时生成。
wx.SpinCtrlDouble常用方法:
- GetDigits(self):获取spin控件值的精度。
- GetIncrement(self):返回spin控件的增量值。
- GetMax(self):返回最大允许值。
- GetMin(self):返回最小允许值。
- GetRange(self):返回允许范围。
- GetTextValue(self):返回控件的文本输入部分中的文本。
- GetValue(self):返回spin控件的当前值。
- SetDigits(self, digits):设置spin控件值的精度。
- SetIncrement(self, value):设置spin控件的增量值。
- SetMax(self, maxVal):设置最大允许值。
- SetMin(self, minVal):设置最小允许值。
- SetRange(self, minVal, maxVal):设置允许范围。
- SetValue (self, text):设置spin控件的当前值。
- SetValue (self, value):设置spin控件的当前值。
五、wx.SpinCtrlDouble演示
#数据调节框(wx.SpinCtrlDouble)import wxclass SampleSpinCtrlDouble(wx.Frame): def __init__(self, *args, **kw): super(SampleSpinCtrlDouble, self).__init__(*args, **kw) self.InitUi() def InitUi(self): #设置标题 self.SetTitle("实战wxPython: SpinCtrlDouble") #设置窗口尺寸 self.SetSize(360, 280) panel = wx.Panel(self) sizer = wx.GridBagSizer(5, 5) st1 = wx.StaticText(panel, label="将华氏温度转换为摄氏温度") sizer.Add(st1, pos = (0, 0), span = (1, 2), flag = wx.ALL, border = 15) st2 = wx.StaticText(panel, label = "华氏度:") sizer.Add(st2, pos = (1, 0), flag = wx.ALL | wx.ALIGN_CENTER, border = 15) self.sc = wx.SpinCtrlDouble(panel, value="0") self.sc.SetRange(-459, 1000) self.sc.SetDigits(1) self.sc.SetIncrement(0.5) sizer.Add(self.sc, pos = (1, 1), flag = wx.ALIGN_CENTER) st3 = wx.StaticText(panel, label="摄氏度:") sizer.Add(st3, pos = (2, 0), flag = wx.ALL | wx.ALIGN_RIGHT, border = 15) self.celsius = wx.StaticText(panel, label="") sizer.Add(self.celsius, pos = (2, 1), flag = wx.ALL, border = 15) computeButton = wx.Button(panel, label="计算") computeButton.SetFocus() sizer.Add(computeButton, pos = (3, 1), flag = wx.ALIGN_RIGHT | wx.TOP, border = 30) closeButton = wx.Button(panel, label="关闭") sizer.Add(closeButton, pos = (3, 2), flag = wx.ALIGN_LEFT | wx.TOP, border = 30) computeButton.Bind(wx.EVT_BUTTON, self.OnCompute) closeButton.Bind(wx.EVT_BUTTON, self.OnClose) panel.SetSizer(sizer) self.Centre() def OnClose(self, e): self.Close(True) def OnCompute(self, e): fahr = self.sc.GetValue() cels = round((fahr - 32) * 5 / 9.0, 2) self.celsius.SetLabel(str(cels))def main(): app = wx.App() sample = SampleSpinCtrlDouble(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()
上述代码与wx.TextCtrl的演示代码基本相同。
self.sc.SetDigits(1)self.sc.SetIncrement(0.5)
添加上面两句设置数值精度和一个小数值的步长。
六、本文知识点
- 了解wx.SpinButton。
- 了解和使用wx.SpinCtrl。
- 了解和使用wx.SpinCtrlDoule。
欢迎关注,评论,收藏,点赞,和转发。
相关参考
【分享成果,随喜正能量】人生不要活得那么辛苦,多少痛苦就让它结束吧,做痛苦的终结者。苦尽甘来,活出对生活的积极努力、美好创造,愿生活更美好。三分精明,七分厚道,与人相处,精明不如厚道,老实待人,才是聪...
1、安全控件实质是一种小程序。由各网站依据需要自行编写,当该网站的注册会员登录该网站时,安全控件发挥作用,然后通过对关键数据进行SSL加密,防止账号密码被木马程序或病毒窃取,可以有效防止木马截取键盘记录。2...
StatefulWidget动态组件,开发中需要改变状态,使用动态组件StatelessWidget静态组件,定义后不会再改变组件按照功能分类1.基础类组件基础组件Text(文本),Image(图片),xxButton(按钮),TextField(输入框),Form(表单)Text(\'HelloWorld\');Form单独...
游标卡尺的编号(LabVIEW数据可视化:如何实现多图游标的联动读数功能)
LabVIEW平台中提供了波形图控件用于二维数据的可视化功能,在这个控件中提供了游标工具,使用游标可读取波形图曲线中任意一点x、y坐标的数据。单幅波形的数据游标读数比较简单,但有些情况下,如对采样数据做频域分析处...
游标卡尺的编号(LabVIEW数据可视化:如何实现多图游标的联动读数功能)
LabVIEW平台中提供了波形图控件用于二维数据的可视化功能,在这个控件中提供了游标工具,使用游标可读取波形图曲线中任意一点x、y坐标的数据。单幅波形的数据游标读数比较简单,但有些情况下,如对采样数据做频域分析处...
一、前言数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口、网络、数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为数据来演示。串...
...界面如下31个日期按钮,不需要手工创建,通过代码产生控件数组,生成31个选项按钮。在窗体show事件里,写代码如下声明变量varsbtns:array[1..31]ofTSpeedButton;//用于创建按钮控件数组n,ncount,x,y,a,b,v,leftv,topv:word;show事件代码procedureT...
人民日报合肥12月5日电(记者徐靖)近日,国家“十三五”重大科技基础设施——聚变堆主机关键系统综合研究设施(CRAFT)主体工程建设取得新进展。目前已完成100余个关键里程碑建设任务及核心部件的设计、预研和测试验证...
人民日报合肥12月5日电(记者徐靖)近日,国家“十三五”重大科技基础设施——聚变堆主机关键系统综合研究设施(CRAFT)主体工程建设取得新进展。目前已完成100余个关键里程碑建设任务及核心部件的设计、预研和测试验证...
手机肉鸡检测(打破禽类养殖业信息化水平落后局面 这家企业用“物联网养鸡”)
...济网北京9月11日讯(记者吴晓薇)目前在我国,禽类养殖水平参差不齐,管理能力还处于雏形阶段,规模化程度不高。其中,养殖记录不完善是一大阻碍。在物联网大行其道之时,精细而准确的数据信息平台将为禽类的科学养殖...