2.按钮组件
-
QPushButton
QPushButton是常用的按钮组件,在前面的示例中我们都是使用它的clicked()信号来编写对应的槽函数。
QPushButton组件的重要属性:
属性 | 功能 |
---|---|
checkable | 可选中,如果将该属性设置为True,QPushButton可以当作CheckBox或RadioButton来使用 |
下面我们通过示例来演示该属性的使用方法,界面设计如下:
窗体上的组件及属性如下:
按钮分组 | objectName | 属性设置 | 描述 |
---|---|---|---|
操作系统 | pushButtonWindows | checkable=True autoExclusive=True flat=True | 具有QRadioButton组件的效果 |
pushButtonLinux | 同上 | ||
pushButtonMac | 同上 | ||
编程语言 | pushButtonPython | checkable=True autoExclusive=False | 具有QCheckBox组件的效果 |
pushButtonC | 同上 | ||
pushButtonCpp | 同上 | ||
pushButtonGo | 同上 | ||
pushButtonJava | 同上 | ||
pushButtonOther | 同上 | ||
无 | pushButtonOk | 单击后根据用户选择生成文本 | |
textBrowserResult | 用于显示文本结果 | ||
pushButtonExit | 退出按钮 |
在界面设计时,需要对按钮进行分组,同一容器内的同类型的QPushButton按钮自动分成一组。
主程序代码如下:
# coding: utf-8 import sys from PyQt5.QtWidgets import QWidget, QApplication from PyQt5.QtCore import pyqtSlot from ui_widget import Ui_Widget class QAppWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.__ui = Ui_Widget() self.__ui.setupUi(self) self.__ui.pushButtonPython.clicked.connect(self.do_selectLang) self.__ui.pushButtonC.clicked.connect(self.do_selectLang) self.__ui.pushButtonCpp.clicked.connect(self.do_selectLang) self.__ui.pushButtonGo.clicked.connect(self.do_selectLang) self.__ui.pushButtonJava.clicked.connect(self.do_selectLang) self.__ui.pushButtonOther.clicked.connect(self.do_selectLang) self.os = 'Windows' self.langs = [] @pyqtSlot(bool) def on_pushButtonWindows_clicked(self, checked): if checked: self.os = 'Windows' else: self.os = '' @pyqtSlot(bool) def on_pushButtonLinux_clicked(self, checked): if checked: self.os = 'Linux' else: self.os = '' @pyqtSlot(bool) def on_pushButtonMac_clicked(self, checked): if checked: self.os = 'Mac' else: self.os = '' def do_selectLang(self): self.langs = [] if self.__ui.pushButtonPython.isChecked(): self.langs.append("Python") if self.__ui.pushButtonC.isChecked(): self.langs.append("C") if self.__ui.pushButtonCpp.isChecked(): self.langs.append("C++") if self.__ui.pushButtonGo.isChecked(): self.langs.append("Go") if self.__ui.pushButtonJava.isChecked(): self.langs.append("Java") if self.__ui.pushButtonOther.isChecked(): self.langs.append("其他") def on_pushButtonOk_clicked(self): txt: str = '您使用的操作系统是:{0}\n您喜欢的编程语言是:{1}'.format(self.os, '.'.join(self.langs)) self.__ui.textBrowserResult.setText(txt) if __name__ == '__main__': app = QApplication(sys.argv) widget = QAppWidget() widget.show() sys.exit(app.exec_())
程序运行效果如下: