- PyQt5 教程
- PyQt5 - 首頁
- PyQt5 - 簡介
- PyQt5 - 最新動態
- PyQt5 - Hello World
- PyQt5 - 主要類
- PyQt5 - 使用 Qt Designer
- PyQt5 - 訊號與槽
- PyQt5 - 佈局管理
- PyQt5 - 基本控制元件
- PyQt5 - QDialog 類
- PyQt5 - QMessageBox
- PyQt5 - 多文件介面
- PyQt5 - 拖放
- PyQt5 - 資料庫處理
- PyQt5 - 繪圖 API
- PyQt5 - BrushStyle 常量
- PyQt5 - QClipboard
- PyQt5 - QPixmap 類
- PyQt5 有用資源
- PyQt5 - 快速指南
- PyQt5 - 有用資源
- PyQt5 - 討論
PyQt5 - QCheckBox 控制元件
當QCheckBox物件新增到父視窗時,文字標籤前面會出現一個矩形框。與QRadioButton一樣,它也是一個可選按鈕。它的常見用途是在使用者被要求選擇一個或多個可用選項的場景中。
與單選按鈕不同,複選框預設情況下不是互斥的。為了將選擇限制在一個可用專案中,必須將複選框新增到QButtonGroup。
下表列出了常用的QCheckBox類方法:
| 序號 | 方法及描述 |
|---|---|
| 1 |
setChecked() 更改複選框按鈕的狀態 |
| 2 |
setText() 設定與按鈕關聯的標籤 |
| 3 |
text() 檢索按鈕的標題 |
| 4 |
isChecked() 檢查按鈕是否被選中 |
| 5 |
setTriState() 為複選框提供無變化狀態 |
每次選中或清除複選框時,物件都會發出stateChanged()訊號。
示例
這裡,兩個QCheckBox物件被新增到水平佈局中。它們的stateChanged()訊號連線到btnstate()函式。使用lambda將訊號的源物件傳遞給函式。
self.b1.stateChanged.connect(lambda:self.btnstate(self.b1)) self.b2.toggled.connect(lambda:self.btnstate(self.b2))
isChecked()函式用於檢查按鈕是否被選中。
if b.text() == "Button1":
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
完整的程式碼如下:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class checkdemo(QWidget):
def __init__(self, parent = None):
super(checkdemo, self).__init__(parent)
layout = QHBoxLayout()
self.b1 = QCheckBox("Button1")
self.b1.setChecked(True)
self.b1.stateChanged.connect(lambda:self.btnstate(self.b1))
layout.addWidget(self.b1)
self.b2 = QCheckBox("Button2")
self.b2.toggled.connect(lambda:self.btnstate(self.b2))
layout.addWidget(self.b2)
self.setLayout(layout)
self.setWindowTitle("checkbox demo")
def btnstate(self,b):
if b.text() == "Button1":
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
if b.text() == "Button2":
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
def main():
app = QApplication(sys.argv)
ex = checkdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
輸出
以上程式碼產生以下輸出:
Button2 is selected Button2 is deselected Button1 is deselected Button1 is selected
如前所述,可以透過將checkBox按鈕新增到QButtonGroup物件中來使其互斥。
self.bg = QButtonGroup() self.bg.addButton(self.b1,1) self.bg.addButton(self.b2,2)
QButtonGroup物件為按鈕提供抽象容器,並且沒有視覺化表示。它發出buttonCliked()訊號並將Button物件的引用傳送到槽函式btngroup()。
self.bg.buttonClicked[QAbstractButton].connect(self.btngroup)
btngroup()函式顯示被點選的複選框的標題。
def btngroup(self,btn): print btn.text()+" is selected"
進行上述更改後,應用程式視窗顯示如下:
Button1 is selected Button2 is selected Button1 is selected
pyqt_basic_widgets.htm
廣告