QT Pyside2 Designer 的基本使用

news2025/1/11 6:57:40

在这里插入图片描述

文章目录

  • 前言
    • PySide2
    • PySide2 Designer
  • 一、安装PySide2、PyQt5
  • 二、使用designer.exe
    • 2.1 工具的大致介绍
    • 2.2 创建一个新的UI
    • 2.3 UI文件另存为/保存(Ctrl+S)
    • 2.4 使用python操作UI文件
  • 总结


前言

PySide2

QT PySide2 是一个用于 Python 编程语言的开源框架,它提供了与 QT C++ 框架的绑定,使得开发者可以使用 Python 进行跨平台的图形用户界面 (GUI) 应用程序开发。QT 是一个功能强大的跨平台应用程序开发框架,具有丰富的 GUI 组件和工具集,以及广泛的应用领域。

PySide2 是 QT 的官方 Python 绑定,由 The Qt Company 维护和支持。它允许开发者使用 Python 的简洁语法和强大的功能来构建 GUI 应用程序,而无需学习 C++。PySide2 提供了对 QT 的完整访问,包括 QT 的核心库、GUI 组件、网络功能、多媒体支持等。

PySide2 Designer

Designer 是一个可视化界面设计工具,它允许开发者通过拖拽和放置的方式创建和编辑图形用户界面 (GUI)。设计师可以使用各种 QT 控件和布局来构建界面,设置属性和样式,定义交互逻辑,并预览界面的外观和行为。

QT PySide2 Designer 提供了一个直观和用户友好的界面,使得界面设计变得简单和快速。开发者可以在设计器中选择和放置各种 QT 控件,如按钮、标签、文本框、列表框等,然后通过属性编辑器设置控件的属性,如大小、位置、颜色、字体等。同时,设计器还提供了布局管理器,用于管理控件的布局和自动调整。

设计好界面后,开发者可以将设计文件保存为.ui 格式,这是一种 XML 文件格式,包含了界面的布局、属性和信号槽的定义。设计文件可以被 PySide2 的代码加载和使用,使得开发者可以在应用程序中动态地创建和管理界面。

总结而言,QT PySide2 Designer 是一个强大的界面设计工具,使得开发者能够轻松创建和编辑 QT GUI 应用程序的界面


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装PySide2、PyQt5

pip install pyside2 -i https://pypi.douban.com/simple/
pip install pyqt5-tools -i https://pypi.douban.com/simple/

安装了之后,在本地找到pyside2模块目录,主要使用这个工具:designer.exe,建议创建个快捷方式;在这里插入图片描述

二、使用designer.exe

2.1 工具的大致介绍

  • 1、工具需要的组件,可点击某个组件拖入至创建好的界面中;
  • 2、查看大概的GUI界面效果,选中组件、双击部分组件可直接修改组件的标题或属性值;
  • 3、查看、修改、删除、选中、已选用的组件及组件名称,关键是操作各种组件的布局;
  • 4、操作组件的属性、标题、水平距离、垂直距离、宽高大小、字体、等其他样式;

在这里插入图片描述

2.2 创建一个新的UI

点击:文件/新建
在这里插入图片描述

2.3 UI文件另存为/保存(Ctrl+S)

点击:文件/另存为
文件后缀为:ui
在这里插入图片描述

2.4 使用python操作UI文件

读入UI文件、修改对象组件的属性、绑定按钮的方法

import sys
from PySide2.QtWidgets import QApplication, QWidget, QTableWidgetItem
from PySide2.QtUiTools import loadUiType, QUiLoader
from PySide2.QtCore import QFile, Qt
from PySide2.QtGui import QIcon


class Gui(QWidget):
    def __init__(self):
        # 加载ui文件,创建qt文件对象,加载文件对象并创建ui对象
        QtFileObj = QFile("yk.ui")
        QtFileObj.open(QFile.ReadOnly)
        QtFileObj.close()
        self.ui = QUiLoader().load(QtFileObj)

        # 设置界面图标
        icon = QIcon("yk.ico")
        self.ui.setWindowIcon(icon)

        # 变量定义、ui组件对象属性设置
        self.index = 0
        self.ui.tableWidgetAnswer.horizontalHeader().setVisible(True)  # 设置tableWidget组件的标题显示为True
        self.ui.startButton.clicked.connect(self.logger_show)  # 绑定按钮的方法
        
    def logger_show(self):
        # 插入内容
        logger_item = {
            'one': '-' * 20, 'two': '-' * 20, 'three': '-' * 20, 'four': '-' * 20,
            'five': '程序已经开始运行,请勿多次点击开始运行按钮'
        }
        self.ui.tableWidgetAnswer.insertRow(int(self.ui.tableWidgetAnswer.rowCount()))
        self.index += 1
        new_item_one = QTableWidgetItem(logger_item['one'])
        new_item_one.setTextAlignment(Qt.AlignCenter)
        new_item_two = QTableWidgetItem(logger_item['two'])
        new_item_two.setTextAlignment(Qt.AlignCenter)
        new_item_three = QTableWidgetItem(logger_item['three'])
        new_item_three.setTextAlignment(Qt.AlignCenter)
        new_item_four = QTableWidgetItem(logger_item['four'])
        new_item_four.setTextAlignment(Qt.AlignCenter)
        new_item_five = QTableWidgetItem(logger_item['five'])
        new_item_five.setTextAlignment(Qt.AlignCenter)
        self.ui.tableWidgetAnswer.setItem(self.index - 1, 0, new_item_one)
        self.ui.tableWidgetAnswer.setItem(self.index - 1, 1, new_item_two)
        self.ui.tableWidgetAnswer.setItem(self.index - 1, 2, new_item_three)
        self.ui.tableWidgetAnswer.setItem(self.index - 1, 3, new_item_four)
        self.ui.tableWidgetAnswer.setItem(self.index - 1, 4, new_item_five)
        # 定位至最新行
        self.ui.tableWidgetAnswer.verticalScrollBar().setSliderPosition(self.index)
        # 刷新
        QApplication.processEvents()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ykGuiObj = Gui()
    ykGuiObj.ui.show()
    sys.exit(app.exec_())

总结

本篇文章适合小白同学看看,做个简单的GUI工具完全够用,主要根据自己的需求不断深入的学习和进步,下面为给大家列出一些注意事项和学习资源,小伙伴有问题和建议可以在评论处说欧;
1、组件的属性不但可以在designer工具中设置,也可以在python设置组件的属性,最后会以python设置的属性为准;
2、使用GUI常见的问题就是,执行函数时界面卡死,关于这个问题我会在下面这篇文章来介绍;
QT pyside2 线程嵌套子线程 实现开始运行和停止运行:https://blog.csdn.net/EXIxiaozhou/article/details/131401531
3、入门文档请看白月黑羽:https://www.byhy.net/tut/py/gui/qt_01
4、入门视频请看白月黑羽:https://www.bilibili.com/video/BV19A411H7dS/
5、深入学习博主推荐-国内站点:https://gitee.com/feiyangqingyun
6、深入学习博主推荐-国际站点:https://github.com/feiyangqingyun
7、CSDN个人主页:https://blog.csdn.net/feiyangqingyun
8、官网:https://www.pythonguis.com/topics/pyside2/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1002681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【建站教程】使用阿里云服务器怎么搭建网站?

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,阿小云来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程&#x…

(10)(10.9) 术语表(一)

文章目录 前言 1 2.4Ghz 2 AGL 3 AHRS 4 APM 5 AMA 6 Arduino 7 APM (AutoPilot Mega) 8 ATC 9 Copter 10 Plane 11 Rover 12 BEC 13 Bootloader 14 COA 15 DCM 16 Eagle file 17 ESC 18 Firmware 19 FPV 20 FTDI 前言 !Note 术语表未编入索…

C++零碎记录(十二)

22. 菱形继承 22.1 菱形继承简介 ① 菱形继承概念: 1. 两个派生类继承同一个基类 2. 又有某个类同时继承两个派生类 3. 这种继承被称为菱形继承 ② 羊继承了动物的数据,驼同样继承了动物的数据,当草泥马使用数据是,就会产生二义…

重构:在新底座之上让应用重生

应用重构正在开启一条云原生时代的新赛道。 数字化发展到今天,企业面临的挑战不仅来自技术层面,更来自认知层面。新架构、新应用正在重新定义数字生产力,重塑商业模式与市场核心竞争力。对金融行业来说,也是如此,一场…

计算机网络第六章——应用层(上)

人生若只如初见,何事秋风悲画扇 文章目录 基于服务的使用以及服务的提供而诞生的两个应用模型, 传输层提供一种端到端的服务,但是不同的网络应用的应用进程之间还需要有一些不同的通信规则,因此在传输层之上建立了一个应用层&am…

信息化管理工程验收评测规范

一、信息工程验收程序: 1.信息化建设项目验收分为初步验收和竣工验收两个阶段。验收由建设单位自行对照招标文件、投标文件和合同执行,并提交初验报告;企业与第三方联系实施验收。 2.工程试运行后30个工作日内,项目建设单位应将…

[计算机入门] 设置日期和时间

3.8 设置日期和时间 在任务栏的最右边是可以看到当前的日期和时间的。当然,如果这里的显示不对,也是可以进行设置的。 1、在任务栏的日期和时间位置,右键鼠标,在弹出的菜单中,点击调整日期/时间。 2、一般情况下&am…

easypoi和poi版本兼容问题记录

最近在开发导出word的功能,遇到下面的问题 提示xml报错的问题,我一度以为是项目换了java11造成的。经过询问朋友,得知有可能是版本冲突造成的,就猛然想起来,我的项目里面还引入了poi这个包。 于是我吧poi的版本降低到了…

【算法训练-数组 五】【二分查找】:旋转数组的最小数字、旋转数组的指定数字

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【数组的二分查找】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为…

C#,《小白学程序》第二十一课:大数(BigInteger)的四则运算之二,减法

1 文本格式 using System; using System.Linq; using System.Text; using System.Collections.Generic; /// <summary> /// 大数的&#xff08;加减乘除&#xff09;四则运算、阶乘运算 /// 乘法计算包括小学生算法、Karatsuba和Toom-Cook3算法 /// </summary> p…

GO语言网络编程(并发编程)Goroutine池

GO语言网络编程&#xff08;并发编程&#xff09;Goroutine池 1. Goroutine池 1.1.1. worker pool&#xff08;goroutine池&#xff09; 本质上是生产者消费者模型可以有效控制goroutine数量&#xff0c;防止暴涨需求&#xff1a; 计算一个数字的各个位数之和&#xff0c;例…

2.5 循环结构语句

在程序设计中&#xff0c;有时需要反复执行一段相同的代码&#xff0c;这时就需要使用循环结构来实现&#xff0c;Java语言提供了while循环、do-while循环、for循环。 一般情况下&#xff0c;一个循环结构包含四部分内容&#xff1a; 初始化部分&#xff0c;设置循环开始时变量…

正交试验设计法

正交实验设计 一、什么是正交试验设计法&#xff1f; 是一种成对测试交互的系统的统计方法。它提供了一种能对所有变量对的组合进行典型覆盖&#xff08;均匀分布&#xff09;的方法。 可以从大量的试验点中挑出适量的、有代表性的点&#xff0c;利用“正交表”&#xff0c;…

Rsync远程同步+inotify监控

一、rsync同步简介 一款快速增量备份工具 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09; 是一个开源的快速备份工具&#xff0c;可支持本地复制&#xff0c;或者与其他SSH,rsync主机同步。 cp&#xff1a;将原文件完整的复制到指定的路径下&#xff0c;而且…

Vector底层原理——面试之我答

Vector概述 vector是STL中最常用的容器&#xff0c;vector主要功能是作动态数组来弥补传统数组的缺点&#xff0c;如&#xff1a;不灵活&#xff0c;不方便插入等等。 Vector支持随机访问&#xff0c;因此访问某一个元素的时间复杂度是O(1)。 vector中存储着许多易用的函数方法…

自动化测试入门知识 —— 数据驱动测试

一、什么是数据驱动测试&#xff1f; 数据驱动测试是一种测试方法&#xff0c;它的核心思想是通过不同的测试数据来验证同一个测试逻辑。通常情况下&#xff0c;测试用例中的输入数据和预期结果会被提取出来&#xff0c;以便可以通过不同的测试数据进行重复执行。 数据驱动测…

spacy 中文语义分析下载安装使用

概念 spaCy 下载 安装spacy pip install -U spacy -i https://pypi.tuna.tsinghua.edu.cn/simple 安装模型 https://github.com/explosion/spacy-models/releases 找到对应的模型&#xff0c;下载&#xff0c;如下图 安装 下载是gz&#xff0c;下载后安装 pip instal…

Flullter学习第一天:什么是Flullter与Flullter安装

1.简介 Flutter使用dart作为主要开发语言,开发后可多端编译,并且能调用原生api 2.安装 官网:Install | Flutter 让我们读下为中国用户特制的文档,访问中国官网 Flutter: 为所有屏幕创造精彩 - Flutter 中文开发者网站 - Flutter 获取 Flutter SDK 点击下方的安装包&#x…

记录一个iOS实现视频分片缓存拖拽快进不能播放的问题

代码现状 首先来看一下我们将视频数据塞给请求的代码 - (void)finishLoadingWithLoadingRequest:(IdiotResourceTask *)task {// printf("哈哈执行到这里执行到到这里\n");printf("哈哈哈数量数量%ld\n", self.taskList.count);//填充信息task.loadingRe…

Python/Java/Php/C#/Go/C/C++这几个主力语言,谁到底真的不行

1.前言 阿里最近又进行了史诗级的大裁员&#xff0c;IT行业肉眼可见的持续性衰退与没落。当潮水退却&#xff0c;才能看出谁在裸泳。作为当今计算机编程界的几大主力语言&#xff0c;谁才真正的裸泳者呢&#xff1f;引用原文:这几个主力语言&#xff0c;谁到底真的不行 2.描述…