文章目錄
- 基本的代碼的模板
- Label控件
- font字體相關
- Button 控件
- CheckBox 控件
- Radio控件
- ComboBox控件
- LineEdit 控件
基本的代碼的模板
class MainWindow(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs) # 調用父類初始化方法# 聲明窗口實例# 代碼結束self.show() # 顯示窗口if __name__ == '__main__':app = QApplication(sys.argv) # 創建應用w = MainWindow()sys.exit(app.exec())
Label控件
- 主要用于顯示靜態文本、圖像或富文本內容
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QHBoxLayout
from PyQt6.QtCore import Qt
import sysclass MainWindow(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs) # 調用父類初始化方法# 代碼開始self.setWindowTitle("Label控件")# 垂直布局layout = QHBoxLayout()label_1 = QLabel('第一個Label')label_1.setAlignment(Qt.AlignmentFlag.AlignCenter)font1 = label_1.font()font1.setFamily('Times New Roman')font1.setPointSize(30)font1.setUnderline(True)print(label_1.text())print(label_1.setText('第一個更改的Label'))# 添加字體label_1.setFont(font1)label_2 = QLabel('第二個Label')label_2.setAlignment(Qt.AlignmentFlag.AlignRight)layout.addWidget(label_1)layout.addWidget(label_2)self.setLayout(layout)# 代碼結束self.show() # 顯示窗口if __name__ == '__main__':app = QApplication(sys.argv) # 創建應用w = MainWindow()sys.exit(app.exec())
font字體相關
import sys
from PyQt6.QtWidgets import QWidget, QLabel, QApplication, QVBoxLayout
from PyQt6.QtGui import QFontclass MainWindow(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs) # 調用父類初始化方法# 創建 QLabel 實例self.label = QLabel("Hello, Qt Font Example!")# 創建 QFont 實例并設置字體屬性font = QFont()font.setFamily("Arial") # 設置字體族font.setPointSize(20) # 設置字體大小(單位:點)font.setBold(True) # 設置粗體font.setItalic(True) # 設置斜體font.setUnderline(True) # 設置下劃線# 將字體應用到 QLabelself.label.setFont(font)# 使用垂直布局管理器將 QLabel 添加到窗口中layout = QVBoxLayout()layout.addWidget(self.label)self.setLayout(layout)self.setWindowTitle("Qt Font Example") # 設置窗口標題self.show() # 顯示窗口if __name__ == '__main__':app = QApplication(sys.argv) # 創建應用w = MainWindow()sys.exit(app.exec()) # 進入主事件循環
Button 控件
按鈕或命令按鈕是?戶命令程序執?某?操作時使?的按鈕,是 GUI 編程中最常?和最重要的?部件。
這里按鈕的狀態就是像是被按下,然后被釋放。
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QMessageBox
import sysclass MainWindow(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs) # 調用父類初始化方法# 代碼開始self.setWindowTitle("Button控件")self.resize(400,300)layout = QVBoxLayout()# 定義一個按鈕self.button1 = QPushButton('第一個按鈕')# 設置可以區分按下和未按下的狀態self.button1.setCheckable(True)button2 = QPushButton()# 設置不可點擊button2.setEnabled(False)# 設置名字button2.setText('第二個按鈕')# 設置信號和槽self.button1.clicked.connect(self.click_me)self.button1.pressed.connect(self.press_me)self.button1.released.connect(self.release_me)self.button1.toggled.connect(self.toggle_me)layout.addWidget(self.button1)layout.addWidget(button2)self.setLayout(layout)# 代碼結束self.show() # 顯示窗口def click_me(self):print('點擊我了')def press_me(self):print('按下我了')def release_me(self):print('松開我了')def toggle_me(self):if self.button1.isChecked():self.button1.setStyleSheet("background-color: lightblue")else:self.button1.setStyleSheet("background-color: lightgrey")print('切換我了')if __name__ == '__main__':app = QApplication(sys.argv) # 創建應用w = MainWindow()sys.exit(app.exec())
CheckBox 控件
QCheckBox ?部件提供了兩種狀態的按鈕:on(選中)/off(未選中)。這個?部件提供了?個帶有單個?本標簽的復選框。(QCheckBox 正式?檔)當選中或禁?復選框時,將觸發 stateChanged() 信號。當您希望在復選框的狀態發?變化時執?某些操作時,您可以將此信號連接到特定的插槽。您可以使? isChecked() ?法來檢查復選框是否被選中。布爾值將根據是否選中該框返回。
from PyQt6.QtWidgets import ( QApplication, QWidget, QCheckBox, QPushButton, \QVBoxLayout, QMessageBox, QRadioButton, QLabel , QHBoxLayout)
import sysclass MainWindow(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs) # 調用父類初始化方法# 代碼開始self.setWindowTitle('checkbox控件')layout = QHBoxLayout()radiobutton = QRadioButton("Australia")radiobutton.setChecked(True)radiobutton.country = "Australia"radiobutton.toggled.connect(self.onClicked)layout.addWidget(radiobutton)radiobutton = QRadioButton("China")radiobutton.country = "China"radiobutton.toggled.connect(self.onClicked)layout.addWidget(radiobutton)radiobutton = QRadioButton("Japan")radiobutton.country = "Japan"radiobutton.toggled.connect(self.onClicked)layout.addWidget(radiobutton)self.setLayout(layout)# 代碼結束self.show() # 顯示窗口def onClicked(self):radioButton = self.sender()if radioButton.isChecked():print("Country is %s" % (radioButton.country))if __name__ == '__main__':app = QApplication(sys.argv) # 創建應用w = MainWindow()sys.exit(app.exec())
Radio控件
QRadioButton?部件提供了?個單選按鈕,?于在?組選項中選擇其中?個。同?組中的單選按鈕是互斥的。
from PyQt6.QtWidgets import QApplication, QWidget, QHBoxLayout, QRadioButton, QLabel
import sysclass MainWindow(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs) # 調用父類初始化方法# 代碼開始self.setWindowTitle('radio單選按鈕')layout = QHBoxLayout()label = QLabel('選擇地區電影:')rd1 = QRadioButton('中國')rd1.setChecked(True) # 默認被選中rd1.toggled.connect(self.choice)rd2 = QRadioButton('美國')rd2.toggled.connect(self.choice)rd3 = QRadioButton('其他')rd3.toggled.connect(self.choice)layout.addWidget(label)layout.addWidget(rd1)layout.addWidget(rd2)layout.addWidget(rd3)self.setLayout(layout)# 代碼結束self.show() # 顯示窗口def choice(self):radio = self.sender() # 發送的對象if radio.isChecked():print(radio.text())if __name__ == '__main__':app = QApplication(sys.argv) # 創建應用w = MainWindow()sys.exit(app.exec())
ComboBox控件
QComboBox是?個下拉列表框,可以顯示當前選中的項?,并能通過下
拉列表選擇其他項?。
from PyQt6.QtWidgets import QApplication, QWidget, QComboBox, QVBoxLayout
import sysclass MainWindow(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs) # 調用父類初始化方法# 代碼開始self.setWindowTitle('combobox控件')layout = QVBoxLayout()self.combo = QComboBox()self.combo.addItem('中英')self.combo.addItem('中日')self.combo.addItem('中韓')self.combo.addItem('中法')# 設置信號self.combo.currentTextChanged.connect(self.item_selected)layout.addWidget(self.combo)self.setLayout(layout)# 代碼結束self.show() # 顯示窗口def item_selected(self):item = self.combo.currentText()print(item)if __name__ == '__main__':app = QApplication(sys.argv) # 創建應用w = MainWindow()sys.exit(app.exec())
LineEdit 控件
QLineEdit 是?個?部件,它允許輸?和修改??字符串。
通過設置 echoMode(),可以將其?作“只寫”區域。這個特性在接收輸?
(?如密碼)時?常有?。
可以使? setEchoMode() ?法設置這些模式,其輸?和函數如下所示。
普通模式是最常?的,也是默認設置(例如
setEchoMode(QLineEdit.EchoMode.Normal) 或 setEchoMode(0))。
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit
import sysclass MainWindow(QWidget):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs) # 調用父類初始化方法# 代碼開始self.setWindowTitle('LineEdit控件')layout = QVBoxLayout()self.line1 = QLineEdit()self.line2 = QLineEdit()self.line2.setEchoMode(QLineEdit.EchoMode.Password)self.line3 = QLineEdit()self.line3.setEchoMode(QLineEdit.EchoMode.NoEcho) # 不顯示,但已經輸入self.line4 = QLineEdit()self.line4.setEchoMode(QLineEdit.EchoMode.PasswordEchoOnEdit) # 切換以后,以密碼顯示# 信號和槽self.line1.cursorPositionChanged.connect(self.cursorPositionChanged)self.line1.selectionChanged.connect(self.selectionChanged)self.line2.editingFinished.connect(self.editingFinished)self.line3.textChanged.connect(self.textChanged)self.line4.textEdited.connect(self.textEdited)layout.addWidget(self.line1)layout.addWidget(self.line2)layout.addWidget(self.line3)layout.addWidget(self.line4)self.setLayout(layout)# 代碼結束self.show() # 顯示窗口def cursorPositionChanged(self):print('光標移動了')self.line3.setText('操作line3')self.line4.setText('操作line4')def editingFinished(self):print('輸出完成')def selectionChanged(self):print('更改選擇區域')def textChanged(self):print(self.line3.text())def textEdited(self):# 與testChanged區別# 使用setText(),textChanged會觸發,但是textEdited不會觸發print(self.line4.text())if __name__ == '__main__':app = QApplication(sys.argv) # 創建應用w = MainWindow()sys.exit(app.exec())