标准的QCheckBox
widget提供了一个简单的方法来为你的用户界面添加可切换的选项,模仿纸质表格上的可勾选框。通过点击小组件,用户可以切换小组件的开和关(在Qt中实际上是第三种半勾选状态)。
这种简单的复选框并不总是最适合UI--例如,如果你有一个明确的开关来控制一个动作,例如打开/关闭一个连接或设备。在这种情况下,模仿实际开关的东西可能会更好。不幸的是,Qt本身并没有这样的widget可用。
这个自定义的widget提供了两个可供选择的切换开关,用于PyQt5和PySide2应用程序 -Toggle
和AnimatedToggle
。它们都是标准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
,使用自定义颜色,为橙色。
这两个切换器
你可以自己定制颜色,只要记住,对于透明度来说,数值是按照AARRGGBB
的顺序指定的,即先是α(透明度),然后是红、绿、蓝--#FFB000
是纯橙色,而#44FFB000
是相同颜色的半透明橙色。
更多内容请参见完整的PySide2教程。