基本的代码的模板
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 sys
class 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 QFont
class 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) # 设置下划线
# 将字体应用到 QLabel
self.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 sys
class 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 sys
class 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 sys
class 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 sys
class 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 sys
class 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())