Toggle & AnimatedToggle - 切换开关的Widget QCheckBox替代品

215 阅读2分钟

标准的QCheckBox widget提供了一个简单的方法来为你的用户界面添加可切换的选项,模仿纸质表格上的可勾选框。通过点击小组件,用户可以切换小组件的开和关(在Qt中实际上是第三种半勾选状态)。

这种简单的复选框并不总是最适合UI--例如,如果你有一个明确的开关来控制一个动作,例如打开/关闭一个连接或设备。在这种情况下,模仿实际开关的东西可能会更好。不幸的是,Qt本身并没有这样的widget可用。

这个自定义的widget提供了两个可供选择的切换开关,用于PyQt5和PySide2应用程序 -ToggleAnimatedToggle 。它们都是标准QCheckBox 的直接替代品,并从它的子类,提供一个相同的接口和信号。这两个widget都可以被定制,以改变每个元素使用的颜色,并且AnimatedToggle 增加了额外的过渡和脉冲动画,以提供更多的物理感觉。

要使用这个小组件,请安装qtwidgets Python库。

pip3 install qtwidgets

然后你可以用以下方法将该部件导入你的应用程序中

蟒蛇

from qtwidgets import Toggle

...或者对于动画的变体 --

蟒蛇

from qtwidgets import AnimatedToggle

这个自定义小组件使用了QPropertyAnimation位图图形教程中涵盖的功能。

库中还有其他可用的小工具

你可以用下面的演示代码来测试这个小部件。

  • PyQt5
  • PySide2

python

import PyQt5
from PyQt5 import QtWidgets
from qtwidgets import Toggle, AnimatedToggle

class Window(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        toggle_1 = Toggle()
        toggle_2 = AnimatedToggle(
            checked_color="#FFB000",
            pulse_checked_color="#44FFB000"
        )

        container = QtWidgets.QWidget()
        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(toggle_1)
        layout.addWidget(toggle_2)
        container.setLayout(layout)

        self.setCentralWidget(container)


app = QtWidgets.QApplication([])
w = Window()
w.show()
app.exec_()

蟒蛇

import PySide2
from PySide2 import QtWidgets
from qtwidgets import Toggle, AnimatedToggle


class Window(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        toggle_1 = Toggle()
        toggle_2 = AnimatedToggle(
            checked_color="#FFB000",
            pulse_checked_color="#44FFB000"
        )

        container = QtWidgets.QWidget()
        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(toggle_1)
        layout.addWidget(toggle_2)
        container.setLayout(layout)

        self.setCentralWidget(container)


app = QtWidgets.QApplication([])
w = Window()
w.show()
app.exec_()

这创建了一个包含两个切换器的窗口--第一个使用Toggle (无动画),使用默认颜色,第二个使用AnimatedToggle ,使用自定义颜色,为橙色。

Two variants of the toggle widget 这两个切换器

你可以自己定制颜色,只要记住,对于透明度来说,数值是按照AARRGGBB 的顺序指定的,即先是α(透明度),然后是红、绿、蓝--#FFB000 是纯橙色,而#44FFB000 是相同颜色的半透明橙色。

更多内容请参见完整的PySide2教程。