QT的常用控件说明
文章目录
- 基本的代码的模板
- 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())