本篇 Python PyQt5 視窗程式新手入門教學彙整了 ShengYu 過往學習 PyQt5 的知識,在此整理成 PyQt5 教學目錄以便日後的查詢與新手入門學習,在本篇 Python PyQt5 教學裡你可以快速地學習 PyQt5 GUI 圖形介面視窗程式設計。
以下 Python PyQt5 教學目錄將分為這幾部分,
- Python PyQt5 基本視窗
- Python PyQt5 QLabel 標籤
- Python PyQt5 QPushButton 按鈕
- Python PyQt5 QLineEdit 文字輸入框
- Python PyQt5 QComboBox 下拉式選單
- Python PyQt5 QRadioButton 單選框
- Python PyQt5 QCheckBox 複選框
- Python PyQt5 QMessageBox 訊息框
那我們開始吧!
Python PyQt5 基本視窗
在 Python 中要使用 PyQt5 需要先安裝 PyQt5 模組,使用 pip 安裝 PyQt5 模組的指令如下,1
$ pip install PyQt5
確認有安裝 PyQt5 模組後,我們便可以開始來寫一個 PyQt5 基本視窗的程式了,以下我們示範建立一個 PyQt5 的基本視窗,一開始需要建立一個 PyQt5 應用程式所需要的 QApplication,QApplication 用來管理 Qt GUI 應用程式的控制流程與主要設定,之後建立一個 QWidget 的子類,如下例中 MyWidget 繼承 QWidget,不熟悉繼承的話可以參考 Python 繼承 inheritance 的用法這篇,在 MyWidget 的 initUI()
成員函式裡使用 setWindowTitle()
讓視窗名稱上顯示 hello world
字樣,使用 setGeometry()
將視窗設定在螢幕視窗座標位置 (50, 50) 上且視窗為 寬200x高150 的大小,之後使用 show() 便會將我們的視窗顯示出來,最後要使用 QApplication.exec_()
來進入 PyQt5 的主事件循環 (Event Loop),1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('hello world')
self.setGeometry(50, 50, 200, 150)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
下圖為 PyQt5 基本視窗的呈現結果,
延伸閱讀:Python 物件導向:繼承 inheritance 的用法
這樣我們就完成的一個基本的 PyQt5 視窗程式囉!接著我們就來學習一下 PyQt5 裡常見的 UI 元件吧!
Python PyQt5 QLabel 標籤
QLabel 標籤是很基本的 UI 元件,主要是用來顯示文字的,也常常用來跟其它 UI 元件搭配,以下為 Python PyQt5 QLabel 按鈕的範例程式,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel)
from PyQt5.QtGui import QFont
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 200, 150)
self.mylabel = QLabel('hello world', self)
self.mylabel.move(40, 50)
self.mylabel.setFont(QFont('Arial', 18))
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
下圖為 PyQt5 QLabel 標籤的呈現結果,
詳細的 PyQt5 QLabel 教學可以看 PyQt5 QLabel 標籤用法與範例 這篇。
QPushButton 按鈕與按鈕事件是視窗程式設計的學習必學的 UI 元件,以下為 Python PyQt5 QPushButton 按鈕的範例程式,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#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 200, 150)
self.mybutton = QPushButton('button', self)
self.mybutton.move(60, 50)
self.mybutton.clicked.connect(self.onButtonClick)
def onButtonClick(self):
self.mybutton.setText('hello wolrd')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
下圖為 PyQt5 QPushButton 按鈕的呈現結果,
詳細的 PyQt5 QPushButton 教學可以看 PyQt5 QPushButton 按鈕用法與範例 這篇。
Python PyQt5 QLineEdit 文字輸入框
要取得使用者的輸入就需要使用 QLineEdit 文字輸入框這個 UI 元件,以下為 Python PyQt5 QLineEdit 按鈕的範例程式,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, QGridLayout, QLineEdit,
QLabel)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 240, 60)
gridlayout = QGridLayout()
self.setLayout(gridlayout)
self.mylabel = QLabel('Name:', self)
gridlayout.addWidget(self.mylabel, 0, 0)
self.mylineedit = QLineEdit(self)
gridlayout.addWidget(self.mylineedit, 0, 1)
self.mylabel2 = QLabel('Password:', self)
gridlayout.addWidget(self.mylabel2, 1, 0)
self.mylineedit2 = QLineEdit(self)
self.mylineedit2.setEchoMode(QLineEdit.Password)
gridlayout.addWidget(self.mylineedit2, 1, 1)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
下圖為 PyQt5 QLineEdit 文字輸入框的呈現結果,
詳細的 PyQt5 QLineEdit 教學可以看 PyQt5 QLineEdit 文字輸入框用法與範例 這篇。
Python PyQt5 QComboBox 下拉式選單
QComboBox 提供下拉式選單給使用者選取選項,跟 QListBox 相比 QComboBox 可以節省很多版面的空間,也讓使用者清楚知道目前的選取的項目,以下為 Python PyQt5 QComboBox 下拉式選單的範例程式,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#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QComboBox)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('my window')
self.setGeometry(50, 50, 200, 150)
self.mycombobox = QComboBox(self)
self.mycombobox.addItems(['apple', 'banana', 'orange', 'lemon', 'tomato'])
self.mycombobox.setCurrentIndex(1)
#self.mycombobox.setCurrentText('banana')
self.mycombobox.move(60, 50)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
下圖為 PyQt5 QComboBox 下拉式選單的呈現結果,
詳細的 PyQt5 QComboBox 教學可以看 PyQt5 QComboBox 下拉式選單用法與範例 這篇。
QRadioButton 單選框提供多選一的操作方式給使用者選取選項,以下為 Python PyQt5 QRadioButton 單選框的範例程式,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#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout,
QRadioButton)
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.myradiobutton1 = QRadioButton('apple', self)
layout.addWidget(self.myradiobutton1)
self.myradiobutton2 = QRadioButton('banana', self)
layout.addWidget(self.myradiobutton2)
self.myradiobutton3 = QRadioButton('orange', self)
layout.addWidget(self.myradiobutton3)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
下圖為 PyQt5 QRadioButton 單選框的呈現結果,
詳細的 PyQt5 QRadioButton 教學可以看 PyQt5 QRadioButton 單選框用法與範例 這篇。
Python PyQt5 QCheckBox 複選框
QCheckBox 複選框提供多選項選取的操作方式給使用者選取選項,以下為 Python PyQt5 QCheckBox 複選框的範例程式,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 教學可以看 PyQt5 QCheckBox 複選框用法與範例 這篇。
Python PyQt5 QMessageBox 訊息框
QMessageBox 訊息框是蠻常見的 UI 元件,經常被使用來顯示提示訊息給使用者,以下為 Python PyQt5 QMessageBox 訊息框的範例程式,1
2
3
4
5
6
7
8#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QApplication, QMessageBox)
if __name__ == '__main__':
app = QApplication(sys.argv)
QMessageBox.information(None, 'my messagebox', 'hello world')
下圖為 PyQt5 QMessageBox 訊息框的呈現結果,
詳細的 QMessageBox 訊息框教學可以看 PyQt5 QMessageBox 用法與範例 這篇。
以上就是 Python PyQt5 新手入門教學介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!