QT的常用控件说明

发布于:2025-08-13 ⋅ 阅读:(31) ⋅ 点赞:(0)

基本的代码的模板

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())

网站公告

今日签到

点亮在社区的每一天
去签到