wxpython控件滑块wx.Slider一些常规的用法总结

学习wxpython控件wx.Slider的地址:https://docs.wxpython.org/wx.Slider.html?highlight=wx%20slider#wx.Slider

1. 将滑块slider竖放,满足越往上拉动滑块显示的数值越大,反之越小

使用wxFormBuilder工具搭建基础的界面,滑块slider常用的两种放置方式:横放(默认的),竖放。

在工具栏选择常用控件Common的滑块slider控件后,wxFormBuilder工具默认滑块slider控件放置方式是”横放“。
在这里插入图片描述
修改滑块slider属性的style选择“wxSL_VERTICAL",将滑块slider的放置方式改为”竖放“。但竖着放置后滑块slider属性显示的maxValue在底部,minValue在顶部,意味着越往上拉动滑块显示的数值越小,越往下拉动滑块显示的数值越大,从感官上不是很理想,需要调整成越往上拉动滑块显示的数值越大,反之越小。
在这里插入图片描述
在这里插入图片描述
查看滑块slider的其他style,看是否有个style能够使滑块slider的最大值在顶部,最小值在底部。
在这里插入图片描述
在这里插入图片描述
发现配置wx.SL_INVERSE这个style可以满足需求。可以在wxFormBuilder工具属性界面增加滑块slider的style为wx.SL_INVERSE。
在这里插入图片描述
或者也可以直接修改生成的python代码,修改滑块slider的style:

        self.m_slider1 = wx.Slider(sbSizer1.GetStaticBox(), wx.ID_ANY, 100, 0, 100, wx.DefaultPosition,
                                   wx.Size(-1, 300), wx.SL_VERTICAL | wx.SL_MIN_MAX_LABELS | wx.SL_INVERSE)

2. 滑块slider的常用方法

2.1 GetValue()获取滑块的当前数值

在这里插入图片描述
GetValue()方法的适用场景:期望实现功能是拉动滑块的数值实时显示在文本框。
假设定义了10个滑块,每个滑块配置一个文本框用于显示滑块实时拉动的数值。

    def set_slider_dict(self, idx):
        slider_dict = {
            0: self.m_slider1,
            1: self.m_slider2,
            2: self.m_slider3,
            3: self.m_slider4,
            4: self.m_slider5,
            5: self.m_slider6,
            6: self.m_slider7,
            7: self.m_slider8,
            8: self.m_slider9,
            9: self.m_slider10
        }
        return slider_dict[idx]

    def set_itemtextctrl_dict(self, idx):
        textctrl_dict = {
            0: self.m_textCtrl2,
            1: self.m_textCtrl3,
            2: self.m_textCtrl4,
            3: self.m_textCtrl5,
            4: self.m_textCtrl6,
            5: self.m_textCtrl7,
            6: self.m_textCtrl8,
            7: self.m_textCtrl9,
            8: self.m_textCtrl10,
            9: self.m_textCtrl11
        }
        return textctrl_dict[idx]

给滑块对应的10个对象设置文本框显示滑块数值的功能,代码如下:

        # 获取滑块的初始值
        for i in range(len(item_list)):
            value = self.set_slider_dict(i).GetValue()
            self.set_itemtextctrl_dict(i).SetValue(str(value))

2.2 SetValue()设置滑块的当前数值

在这里插入图片描述
SetValue()方法的适用场景:期望实现功能是在文本框中键入数值按下”ENTER"建后,对应滑块自动跳到文本框输入的数值位置。

        # 设置文本框键入数值事件,设置文本框的enter事件
        self.m_textCtrl2.Bind(wx.EVT_TEXT_ENTER, self.change_slide_value_1)
        
    def change_slide_value_1(self, event):
        curr_value = int(self.m_textCtrl2.GetValue())
        self.m_slider1.SetValue(curr_value)

注意:要实现文本框的”ENTER"建入事件,需要先设置文本框的style为wx.TE_PROCESS_ENTER。
在这里插入图片描述
对应python代码:

        self.m_textCtrl2 = wx.TextCtrl(sbSizer1.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition,
                                       wx.Size(80, -1), wx.TE_PROCESS_ENTER)

2.3 GetRange()获取滑块的取值范围

在这里插入图片描述
GetRange()方法的适用场景:期望实现功能是限制文本框输入数值范围,文本框的输入数值有效范围应该是对应滑块的取值范围。

使用滑块的GetRange()方法返回是元组形式存储的数值范围:
在这里插入图片描述
功能实现代码如下:

    def change_slide_value_1(self, event):
        slider_value_range = self.m_slider1.GetRange()
        if int(self.m_textCtrl2.GetValue()) < slider_value_range[0]:
            self.m_textCtrl2.SetValue(str(slider_value_range[0]))
        elif int(self.m_textCtrl2.GetValue()) > slider_value_range[1]:
            self.m_textCtrl2.SetValue(str(slider_value_range[1]))
        curr_value = int(self.m_textCtrl2.GetValue())
        self.m_slider1.SetValue(curr_value)

2.4 SetLineSize()设置滑块拉动的步长

在这里插入图片描述
wxFormBuilder工具生成滑块,默认滑块的拉动步长为1。

2.5 SetMax设置滑块的最大值,SetMin设置滑块的最小值

在这里插入图片描述
在这里插入图片描述
滑块的最大值和最小值可以在初始化框架界面的时候设置:
在这里插入图片描述
对应python代码:

        self.m_slider1 = wx.Slider(sbSizer1.GetStaticBox(), wx.ID_ANY, 100, 0, 100, wx.DefaultPosition,
                                   wx.Size(-1, 300), wx.SL_INVERSE | wx.SL_VERTICAL)

也可以根据滑块对应对象数据类型取值范围的需要,在不改变wxFormBuilder工具初始最大值和最小值设置的提前下,使用SetMax()和SetMin()方法自行修改设置。

例如:

        self.SetSizer(bSizer1)
        self.Layout()

        self.Centre(wx.BOTH)

        ##************************************##
        # slider基础设置
        self.m_slider1.SetMax(100)
        self.m_slider2.SetMax(99)
        self.m_slider3.SetMax(100)
        self.m_slider4.SetMax(99)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草莓仙生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值