本篇 ShengYu 將介紹 Python PyQt5 QCheckBox 複選框用法與範例,CheckBox 可以作一些多選項的確認功能,例如代辦清單這種應用。
以下的 Python PyQt5 QCheckBox 用法與範例將分為這幾部分,
- PyQt5 QCheckBox 基本用法
- PyQt5 設定 QCheckBox 預設的選項
- PyQt5 QCheckBox 綁定事件
PyQt5 QCheckBox 基本用法
PyQt5 簡單建立 QCheckBox 的用法如下,在建構 QCheckBox 的同時帶入複選框的顯示文字,之後使用 move 移動到想要顯示的座標上,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QCheckBox)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 200, 150)
self.checkbox = QCheckBox('PyQt5', self)
self.checkbox.move(60, 50)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
結果圖如下,
這邊示範建立多個 QCheckBox,並且不使用 move 手動排版的方式,而是透過放入 QVBoxLayout 來進行排版,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QCheckBox)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 200, 150)
layout = QVBoxLayout()
self.setLayout(layout)
self.checkbox1 = QCheckBox('apple', self)
layout.addWidget(self.checkbox1)
self.checkbox2 = QCheckBox('banana', self)
layout.addWidget(self.checkbox2)
self.checkbox3 = QCheckBox('orange', self)
layout.addWidget(self.checkbox3)
self.checkbox4 = QCheckBox('tomato', self)
layout.addWidget(self.checkbox4)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
結果圖如下,
PyQt5 設定 QCheckBox 預設的選項
這邊介紹 PyQt5 設定 QCheckBox 預設的選項,建立 QCheckBox 後預設是不勾選的狀態,有兩種方式可以改變這個狀態,
一個是使用 QCheckBox.toggle()
,toggle 就是原本勾選的會變成不勾選,在使用一次 toggle 的話原本不勾選的會變成勾選,
另一個方式是透過 QCheckBox.setChecked()
來設定 CheckBox 是否要勾選,True 為 勾選,False 為不勾選,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QCheckBox)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 200, 150)
layout = QVBoxLayout()
self.setLayout(layout)
self.checkbox1 = QCheckBox('apple', self)
layout.addWidget(self.checkbox1)
self.checkbox2 = QCheckBox('banana', self)
self.checkbox2.toggle()
layout.addWidget(self.checkbox2)
self.checkbox3 = QCheckBox('orange', self)
self.checkbox3.setChecked(False)
layout.addWidget(self.checkbox3)
self.checkbox4 = QCheckBox('tomato', self)
self.checkbox4.setChecked(True)
layout.addWidget(self.checkbox4)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
結果圖如下,
PyQt5 QCheckBox 綁定事件
PyQt5 QCheckBox 綁定事件可以用 QCheckBox.clicked.connect()
,或者是 QCheckBox.stateChanged.connect()
這兩種信號,將信號綁訂到對應處理的函式,這邊示範 QCheckBox.clicked.connect()
信號綁訂,
而在處理函式裡可以使用 QCheckBox.isChecked()
來判斷該 CheckBox 是否被 check 了,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QCheckBox)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 200, 150)
layout = QVBoxLayout()
self.setLayout(layout)
self.checkbox1 = QCheckBox('apple', self)
self.checkbox1.clicked.connect(self.onCheckBox1Click)
layout.addWidget(self.checkbox1)
self.checkbox2 = QCheckBox('banana', self)
self.checkbox2.clicked.connect(self.onCheckBox2Click)
layout.addWidget(self.checkbox2)
self.checkbox3 = QCheckBox('orange', self)
self.checkbox3.clicked.connect(self.onCheckBox3Click)
layout.addWidget(self.checkbox3)
self.checkbox4 = QCheckBox('tomato', self)
self.checkbox4.clicked.connect(self.onCheckBox4Click)
layout.addWidget(self.checkbox4)
def onCheckBox1Click(self):
if self.checkbox1.isChecked():
print('apple is checked')
else:
print('apple is unchecked')
def onCheckBox2Click(self):
if self.checkbox2.isChecked():
print('banana is checked')
else:
print('banana is unchecked')
def onCheckBox3Click(self):
if self.checkbox3.isChecked():
print('orange is checked')
else:
print('orange is unchecked')
def onCheckBox4Click(self):
if self.checkbox4.isChecked():
print('tomato is checked')
else:
print('tomato is unchecked')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
當然你也可以這幾個 CheckBox 全部綁訂同一個事件處理函式,而在 onCheckBoxClick()
處理函式裡透過 self.sender()
的方式可以取得是哪一個 CheckBox,範例如下,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QCheckBox)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 200, 150)
layout = QVBoxLayout()
self.setLayout(layout)
self.checkbox1 = QCheckBox('apple', self)
self.checkbox1.clicked.connect(self.onCheckBoxClick)
layout.addWidget(self.checkbox1)
self.checkbox2 = QCheckBox('banana', self)
self.checkbox2.clicked.connect(self.onCheckBoxClick)
layout.addWidget(self.checkbox2)
self.checkbox3 = QCheckBox('orange', self)
self.checkbox3.clicked.connect(self.onCheckBoxClick)
layout.addWidget(self.checkbox3)
self.checkbox4 = QCheckBox('tomato', self)
self.checkbox4.clicked.connect(self.onCheckBoxClick)
layout.addWidget(self.checkbox4)
def onCheckBoxClick(self):
checkbox = self.sender()
#print(checkbox)
if checkbox.isChecked():
print(checkbox.text() + ' is checked')
else:
print(checkbox.text() + ' is unchecked')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
以上就是 Python PyQt5 QCheckBox 複選框用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!