wxpython之SpinCtrl

1. SpinCtrl介绍

SpinCtrl又称为微调控制器,它由微调按钮和文本控件两部分组成。我们可以通过按微调按钮箭头或者在文本控件中键入数据,或者通过键盘上的上下键来改变值(如果使能了对应的flag)。当通过文件键入数据时,如果键入的值小于最小值时,控件的value会设置为最小值(可参见示例代码的运行结果。最小值为 1 1 1,如果输入 0 0 0,文本的实际值其实被设置成了 1 1 1)。
在这里插入图片描述

2. 代码示例

import wx


class SpinCtrlFrame(wx.Frame):
    def __init__(self):
        super(SpinCtrlFrame, self).__init__(None, -1, "SpinCtrl Frame", size=(280, 100))
        panel = wx.Panel(self, 1)
        self.sc = wx.SpinCtrl(panel, -1, "", (30, 20), (80, -1), style=wx.SP_WRAP | wx.SP_ARROW_KEYS)
        self.sc.SetRange(1, 100)
        self.sc.SetValue(5)

        self.sc.Bind(wx.EVT_TEXT, self.OnText)
        self.sc.Bind(wx.EVT_SPINCTRL, self.OnSpinCtrl)

    def OnText(self, event):
        print("Text changed: ", self.sc.GetValue())

    def OnSpinCtrl(self, event):
        print("Text is: ", self.sc.GetValue())


def main():
    app = wx.App()
    frame = SpinCtrlFrame()
    frame.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()

代码第8行创建了一个SpinCtrl控件。其中,初始 v a l u e value value为空,控件宽度为 80 80 80,同时设置了SP_WRAPSP_ARROW_KEYS两个样式标记(下面会具体说明这些标记的作用)。
代码第9行设置了SpinCtrl的取值范围 [ 0 , 100 ] [0,100] [0,100]
代码第10行设置了SpinCtrl的取值为5。
运行结果如下所示:
在这里插入图片描述

3. SpinCtrl相关样式标志及其作用

常用样式标志及其作用
样式标志作用
wx.SP_WRAP当取值为最大值,继续按⬆时,文本将显示最小值;反之亦然。
wx.SP_ARROW_KEYS默认样式。允许用户通过键盘的上下键来改变控件的值。(但是个人在mac上尝试不起效,windows上是有效的)
wx.SP_HORIZONTAL设置微调按钮为左右箭头
wx.SP_VERTICAL设置微调按钮为上下箭头
wx.SP_3D绘制3D边框和分割线。这是默认样式
wx.SP_3DSASH绘制3D分割线。
wx.SP_3DBORDER绘制3D边框。

4. SpinCtrl相关事件

示例代码中,包含了下面两个事件的捕获和处理。

相关事件
事件触发条件
wx.EVT_TEXT当文本改变时,触发该事件。
wx.EVT_SPINCTRL当控件的值通过微调控件改变时,触发该事件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值