PyQt5 GUI 开发的基础知识

2025-07-27 20:50
文章标签 pyqt5 gui 基础知识 开发

本文主要是介绍PyQt5 GUI 开发的基础知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设...

简介

QT的全称是"Qt Toolkit",是一个跨平台的C++图形用户界面应用程序开发框架。
Qt(发音为"cute")是一个由Qt Company开发的跨平台应用程序开发框架,最初由挪威公司Trolltech于1991年创建。它主要用于开发图形用户界面(GUI)应用程序,但也支持非GUI程序的开发,如控制台工具和服务器。‌‌

第一个PyQt程序

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("Hello World")    # 设置窗口标题
    w.show()                           # 展示窗口
    app.exec_()                        # 程序进行循环等待状态

最常用的三个功能模块

QtCore、QtGui、QtWidgets

控件QPushButton(按钮)

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

if __name__ javascript== '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("Hello World")    # 设置窗口标题
	btn = QPushButton("按钮")          # 在窗口里面添加控件-QPushButton
    btn.setParent(w)                   
    w.show()                           # 展示窗口
    app.exec_()                        # 程序进行循环等待状态

控件QLable(纯文本)

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("Hello World")    # 设置窗口标题
	# lab = QLabel("账号: ", w)         # 简写方式
	lab = QLabel("账号: ")
    lab.setParent(w)
	lab.setGeometry(20, 20, 300, 300)
    w.show()                           # 展示窗口
    app.exec_()                        # 程序进行循环等待状态

控件QLineEdit(文本框)

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("Hello World")    # 设置窗口标题
	edit = QLineEdit(w)
    edit.setPlaceholderText("请输入账号")
    edit.setGeoFUVdoyzDimetry(50, 20, 200, 20)
    w.show()                           # 展示窗口
    app.exec_()                        # 程序进行循环等待状态

调整窗口的大小和位置

w=QWidget()
w.resize(300, 300)    # 设置窗口大小
w.move(0, 0)          # 移动窗口

desktop = QDesktopWidget()
center_point = desktop.availableGeometry().center()
x = center_point.x()
y = center_point.y()

print(w.frameGeometry())
print(w.frameGeometry().getRect())
old_x, old_y, fg_w, fg_h = w.frameGeometry().getRect()

设置窗口的图标

w = QWidget()
w.setWindowTitle("Hello World")
icon = QIcon("Windows_icon.png")
w.setWindowIcon(icon)

布局-QBoxLayout

垂直布局-QVBoxLayout

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout

class MyWindow(QWidget):
    """"""
    
    def __init__(self):
        """"""
        super().__init__()
		self.setWindowTitle("垂直布局")
        self.icon = QIcon("windows_ichttp://www.chinasem.cnon.png")
        self.setWindowIcon(self.icon)
        self.resize(500, 400)
		self.layout = QVBoxLayout()
        self.button_layout()
        self.setLayout(self.layout)
        
	def button_layout(self):
        """"""
        btn1 = QPushButton("按钮1")
		self.layout.addwidget(btn1)
        btn2 = QPushButton("按钮2")
        self.layout.addWidget(btn2)
		btn3 = QPushButton("按钮3")
        self.layout.addWidget(btn3)
        self.layout.addStretch()
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
	w = MyWindow()
    w.show()
    app.exec_()

水平布局-QHBoxLayout

""""""

import sys
from PyQt5.QtWidgets import (
    QApplication,
    QWidget,
    QRadioButton,
    QVBoxLayout,
    QHBoxLayout,
    QGroupBox,
)

class MyWindow(QWidget):
    """"""

    def __init__(self):
        """"""
        super().__init__()
        self.setWindowTitle("Hello World")
        self.setup()

    def setup(self):
        """"""
        hobby_box = self.generate_hobby_group_box()
        gender_box = self.generate_gender_group_box()
        container = QVBoxLayout()
        container.addWidget(hobby_box)
        container.addWidget(gender_box)
        self.setLayout(container)

    @staticmethod
    def generate_hobby_group_box():
        """"""
        hobby_box = QGroupBox("爱好")
        hobby_layout = QVBoxLayout()
        btn1 = QRadioButton("抽烟")
        btn2 = QRadioButton("打牌")
        hobby_layout.addWidget(btn1)
        hobby_layout.addWidget(btn2)
        hobby_box.setLayout(hobby_layout)

        return hobby_box

    @staticmethod
    def generate_gender_group_box():
        """"""
        gender_box = QGroupBox("性别")
        gender_layout = QHBoxLayout()
        btn1 = QRadioButton("男")
        btn2 = QRadioButton("女")
        gender_layout.addWidget(btn1)
        gender_layout.addWidget(btn2)
        gender_box.setLayout(gender_layout)

        return gender_box

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    app.exec_()

布局-QGridLayout

import sys
from PyQt5.QtWidgets import (
	QApplication,
	QWidget,
	QLineEdit,
	QVBoxLayout,
	QGridLayout,
	QPushButton,
)

class MyWindow(QWidget):
    """"""

    def __init__(self):
        """"""
        super().__init__()
        self.setup()

    def setup(self):
        """"""
        self.set编程WindowTitle("计算器")

        edit = QLineEdit()
        edit.setPlaceholderText("请输入内容")
        edit.setParent(self)

        grid_layout = self.generate_grid_layout()

        container = QVBoxLayout()
        container.addWidget(edit)
        container.addLayout(grid_layout)

        self.setLayout(container)

    @staticmethod
    def generate_grid_layout():
        """"""
        data = {
            0: ["%", "CE", "C", "<-"],
            1: ["7", "8", "9", "/"],
            2: ["4", "5", "6", "x"],
            3: ["1", "2", "3", "-"],
            4: ["0", ".", "=", "+"],
        }

        grid_layout = QGridLayout()
        for row, row_values in data.items():
            for col, value in enumerate(row_values):
                btn = QPushButton(value)
                grid_layout.addWidget(btn, row, col)

        return grid_layout

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    app.exec_()

布局-QFormLayout

import sys
from PyQt5.QtWidgets import (
	QApplication,
	QWidget,
	QVBoxLayout,
	QFormLayout,
	QPushButton,
	QLineEdit,
	QLabel,
)

class MyWindow(QWidget):
    """"""

    def __init__(self):
        """"""
        super().__init__()
        self.setWindowTitle("Hello World")

        form_layout = QFormLayout()
        lab1 = QLabel("账号")
        edit1 = QLineEdit()
        edit1.setPlaceholderText("请输入账号")
        lab2 python= QLabel("密码")
        edit2 = QLineEdit()
        edit2.setPlaceholderText("请输入密码")
        form_layout.addRow(lab1, edit1)
        form_layout.addRow(lab2, edit2)

        btn = QPushButton("登录")

        container = QVBoxLayout()
        container.addLayout(form_layout)
        container.addWidget(btn)

        self.setLayout(container)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    app.exec_()

到此这篇关于PyQt5 GUI 开发基础的文章就介绍到这了,更多相关PyQt5 GUI 开发内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于PyQt5 GUI 开发的基础知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155505

相关文章

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1