建立 PyQt5 视窗
这篇教学会介绍如何开始使用 PyQt5 建立基本的应用程序视窗,以及透过常用的视窗参数,进行视窗的相关设定。
快速导览:
- PyQt6 版本参考:PyQt6 教学 - 建立 PyQt5 视窗
- 因为 Google Colab 不支援 PyQt5,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda )。
建立 PyQt5 视窗
PyQt5 建立视窗的起手式,会先使用 QtWidgets.QApplication(sys.argv) 建立应用程序,接着使用 QtWidgets.QWidget() 放入视窗元件,作为摆放其他元件的基底,视窗程序使用 sys.exit(app.exec_()) 作为结尾,意义上等同将程序包裹在一个无限循环里,下方的程序码执行后,会出现一个空的视窗界面。
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv) # 視窗程式開始
Form = QtWidgets.QWidget() # 放入基底元件
Form.show() # 顯示元件
sys.exit(app.exec_()) # 視窗程式結束
调整视窗样式
建立视窗元件后,就能使用下列几种常用方法设定样式:
| 方法 | 参数 | 说明 |
|---|---|---|
| setWindowTitle() | str | 设定标题。 |
| resize() | width, height | 设定打开视窗时的长宽。 |
| setStyleSheet() | style | 使用网页 CSS 样式设定样式 ( 不支援 CSS3 语法 )。 |
| width() | 取得视窗宽度。 | |
| height() | 取得视窗高度。 |
下面的程序码执行后,会产生一个 320x240 粉红色背景的视窗,同时会印出该视窗的长宽。
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
Form.setWindowTitle('oxxo.studio') # 設定標題
Form.resize(320, 240) # 設定長寬尺寸
Form.setStyleSheet('background:#fcc;') # 使用網頁 CSS 樣式設定背景
print(Form.width()) # 印出寬度
print(Form.height()) # 印出高度
Form.show()
sys.exit(app.exec_())
在视窗中放入其他元件
建立基底的元件后,就能在里面加入其他的元件,下方的程序码执行后,会在视窗里加入一个文字为 hello world 的 Label。
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
Form.setWindowTitle('oxxo.studio')
Form.resize(320, 240)
Form.setStyleSheet('background:#fcc;')
print(Form.width())
print(Form.height())
label = QtWidgets.QLabel(Form) # 在 Form 裡加入 label
label.move(50,50) # 移動到 (50, 50) 的位置
label.setText('hello world') # 寫入文字
label.setStyleSheet('font-size:30px; color:#00c') # 設定樣式
Form.show()
sys.exit(app.exec_())
改用 class 的写法
上方的程序码,亦可改用 class 的写法表示。
from PyQt5 import QtWidgets
import sys
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setObjectName("MainWindow")
self.setWindowTitle('oxxo.studio')
self.resize(300, 200)
self.setStyleSheet('background:#fcc;')
self.ui()
def ui(self):
label = QtWidgets.QLabel(self)
label.move(50,50)
label.setText('hello world')
label.setStyleSheet('font-size:30px; color:#00c')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
Form = MyWidget()
Form.show()
sys.exit(app.exec_())
微信扫码关注
抖音扫码关注