水平回转平台(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按钮的当前值。

图1:wx.SpinButton类继承关系

二、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控件的当前值。

图2:wx.SpinCtrl类继承关系

三、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 控件获取当前值。计算摄氏温度,并将计算出的温度设置显示在一个静态文本控件上。

图3:wx.SpinCtrl演示

四、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控件的当前值。

图4:wx.SpinCtrlDouble类继承关系

五、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)

添加上面两句设置数值精度和一个小数值的步长。

图5:wx.SpinCtrlDouble演示


六、本文知识点

  • 了解wx.SpinButton。
  • 了解和使用wx.SpinCtrl。
  • 了解和使用wx.SpinCtrlDoule。

前一篇:wxPython - 基本控件之滑块Slider

欢迎关注,评论,收藏,点赞,和转发。

相关参考

控件板(工作表控件综合应用之控件搭建)

【分享成果,随喜正能量】人生不要活得那么辛苦,多少痛苦就让它结束吧,做痛苦的终结者。苦尽甘来,活出对生活的积极努力、美好创造,愿生活更美好。三分精明,七分厚道,与人相处,精明不如厚道,老实待人,才是聪...

安全控件是什么

1、安全控件实质是一种小程序。由各网站依据需要自行编写,当该网站的注册会员登录该网站时,安全控件发挥作用,然后通过对关键数据进行SSL加密,防止账号密码被木马程序或病毒窃取,可以有效防止木马截取键盘记录。2...

常用的容器类控件有哪些(Flutter基础控件介绍)

StatefulWidget动态组件,开发中需要改变状态,使用动态组件StatelessWidget静态组件,定义后不会再改变组件按照功能分类1.基础类组件基础组件Text(文本),Image(图片),xxButton(按钮),TextField(输入框),Form(表单)Text(\'HelloWorld\');Form单独...

游标卡尺的编号(LabVIEW数据可视化:如何实现多图游标的联动读数功能)

LabVIEW平台中提供了波形图控件用于二维数据的可视化功能,在这个控件中提供了游标工具,使用游标可读取波形图曲线中任意一点x、y坐标的数据。单幅波形的数据游标读数比较简单,但有些情况下,如对采样数据做频域分析处...

游标卡尺的编号(LabVIEW数据可视化:如何实现多图游标的联动读数功能)

LabVIEW平台中提供了波形图控件用于二维数据的可视化功能,在这个控件中提供了游标工具,使用游标可读取波形图曲线中任意一点x、y坐标的数据。单幅波形的数据游标读数比较简单,但有些情况下,如对采样数据做频域分析处...

模拟量串口采集模块(Qt编写控件属性设计器7-串口采集)

一、前言数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口、网络、数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为数据来演示。串...

手工挂历制作方法(创建控件数组制作日历)

...界面如下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日讯(记者吴晓薇)目前在我国,禽类养殖水平参差不齐,管理能力还处于雏形阶段,规模化程度不高。其中,养殖记录不完善是一大阻碍。在物联网大行其道之时,精细而准确的数据信息平台将为禽类的科学养殖...