使用 Qt designer

news2024/11/25 12:45:31

使用 Qt designer

  • 1、配置Qt designer外部工具
  • 2、Qt designer(Qt 设计师)使用
    • 2.1 创建保存文件ui
    • 2.2 `pyuic5.exe 工具` 转化成为py文件
    • 2.3 直接导入UI文件
  • 2、qrc资源管理器

1、配置Qt designer外部工具

实质就是 Qt\bin 工具中 designer.exe

在这里插入图片描述

请查看 PyQt5开始入门、pyQt5 + pycharm 已经说明

2、Qt designer(Qt 设计师)使用

在这里插入图片描述

2.1 创建保存文件ui

文件apptest.ui 这个就是 PyQt5 的布局文件;

在这里插入图片描述
文件apptest.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget"/>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

2.2 pyuic5.exe 工具 转化成为py文件

可以使用 pyuic5.exe 工具 转化成为 apptest.py文件(查看 PyQt5开始入门、pyQt5 + pycharm):

pyuic5 apptest.ui -o apptest.py

文件apptest.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'apptest.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

添加main入口使用:

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

2.3 直接导入UI文件

uic.loadUi(r'C:\Users\Administrator\Desktop\apptest.ui', self) 导入UI文件
from PyQt5.uic import loadUi

  • UI文件中<widget class="QMainWindow" name="MainWindow"> 默认self;对应代码class Ui_MainWindow(QMainWindow)
  • 其他widget可直接通过name使用,例如self.statusbar.showMessage('Ready')
    再举例添加菜单栏self.menubar.addAction(openAct)

apptest.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys

from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QFileDialog
from PyQt5.uic import loadUi


class Ui_MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        loadUi(r'C:\Users\Administrator\Desktop\apptest.ui', self)
        self.setupUi()

    def setupUi(self):
        print("setupUI")
        self.resize(800, 600)
        self.statusbar.showMessage('Ready')
        self.menuBarUI()
        QtCore.QMetaObject.connectSlotsByName(self)

    def menuBarUI(self):
        openAct = QAction(self.menubar)
        openAct.setCheckable(False)
        openAct.setObjectName('openFileAction')
        openAct.triggered.connect(self.opendir)
        openAct.setText('打开')
        self.menubar.addAction(openAct)

    def opendir(self):
        dir = QFileDialog.getExistingDirectory(self, r"Open Directory",
                                               "./",
                                               QFileDialog.ShowDirsOnly
                                               | QFileDialog.DontResolveSymlinks)
        print(str(dir))


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

2、qrc资源管理器

**qrc文件:**更多查看 PyQt5 资源管理

<!DOCTYPE RCC>
<RCC version="1.0">
	<qresource>
		<file>images/icon.ico</file>
	</qresource>
</RCC>

在这里插入图片描述

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

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

相关文章

Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Redis应用(3)——Redis的项目应用(二):抢购图书 ---> Redis高并发的问题 分布式锁Redission的使用

目录 引出Redis的高并发问题redis的高并发问题Redisson中间件引入RedissonRedisson配置Redisson应用报错&#xff1a;java.lang.NoClassDefFoundErro Redis的项目应用&#xff08;二&#xff09;&#xff1a;抢购图书1.0版本&#xff0c;Java代码&#xff1a;数据不安全测试方法…

Python+Selenium做自动化测试

一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b; 2.输入格式正确的用户名和不正确的密码&#xff0c;验证是否登录失败&#xff0c;并且提示信息正确&#xff1b; 3.输入格式正…

H 欢乐颂+J 睡美人

H 欢乐颂 登录—专业IT笔试面试备考平台_牛客网 思路&#xff1a;这个题就是题意比较难懂&#xff0c;思路还挺好想的&#xff0c;其实就是每个点都有几个状态&#xff0c;然后只有存在相同状态的点之间才可以连边&#xff0c;假设点i的状态和为a&#xff0c;点j的状态和为b&a…

Packet Tracer – 配置无线路由器上的端口转发

Packet Tracer – 配置无线路由器上的端口转发 地址分配表 设备 接口 IP 地址 子网掩码 LA 互联网 209.165.134.1 255.255.255.252 LAN 192.168.0.1 255.255.255.0 拓扑图 目标 第 1 部分&#xff1a;配置端口转发 第 2 部分&#xff1a;验证 ServerA 远程连接 …

C语言基础:预处理指令的使用

本文结合工作经验&#xff0c;研究C语言中常见的预处理指令的用法。 文章目录 1 预处理指令概念2 常见的预处理指令2.1 #include包含头文件2.2 #define定义宏2.2.1 类对象宏&#xff08;object-like macro&#xff09;2.2.2 类函数宏&#xff08;function-like macro&#xff…

Docker 镜像的创建

Docker 镜像的创建 创建镜像有三种方法&#xff0c;分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。 1&#xff0e;基于现有镜像创建 基于现有镜像创建 先使用现有镜像创建容器 docker run 再进入容器进行内容的更新 docker exex 最后提交成新的进行 …

C++语法总结

今天给大家带来的不是某个知识点的解说&#xff0c;而是我花了几个小时的时间&#xff0c;写的一个C的思维导图&#xff0c;希望大家能够喜欢 以上是我对C语法的一些理解&#xff0c;有些可能是我遗漏了&#xff0c;有不对的地方希望大家能够指出&#xff0c;最后&#xff0c;子…

【Atcoder】 [ARC151D] Binary Representations and Queries

题目链接 Atcoder方向 Luogu方向 题目解法 首先需要得到一个性质&#xff1a; 当 X i ≠ X j Xi\ne Xj XiXj 时&#xff0c; i , j i,j i,j 操作的先后顺序可以交换 证明&#xff1a; 可以画一张图&#xff0c;只考虑 Y i Y j 0 YiYj0 YiYj0 的情况&#xff0c;其他情…

力扣256.翻转二叉树(递归/qBFS) 剑指offer 32 从上到下打印二叉树(q BFS)I II III(三道题)

采用队列 class Solution { public:TreeNode* invertTree(TreeNode* root) {queue<TreeNode*> q;if(rootNULL) return root;q.push(root);int i0;while(!q.empty()){TreeNode *curq.front();swap(cur->left,cur->right);if(cur->left) q.push(cur->left);if…

电商系统架构设计系列(六):电商的「账户系统」设计要特别考虑哪些问题?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;电商的账户系统&#xff0c;该如何设计&#xff1f; 今天这篇文章&#xff0c;我们来说一下电商的账户系统。 引言 账户系统负责记录和管理用户账户的余额&#xff0c;这个余额就是每个用户临时存在电商的钱&#xff…

Spring整合Mybatis原理

首先介绍一下Mybatis的工作原理 先简略的放两张图&#xff0c;后面的知识结合这两张图比较好理解 Mybatis的基本工作原理 在 Mybatis 中&#xff0c;我们可以使用⼀个接口去定义要执行sql&#xff0c;简化代码如下&#xff1a; 定义⼀个接口&#xff0c;Select 表示要执行查询…

UE 材质实现让远处物体变小

CameraDepthFade: 根据距离摄像机的距离改变值 Fade Length: 从0到1的过渡距离 Fade Offset&#xff1a;小于该值的地方值为1 UV平铺&#xff1a;值越大&#xff0c;平铺的越少&#xff0c;纹理重复显示的越少&#xff0c;视觉效果纹理变大&#xff0c;值越小&#xff0c;平铺…

[Linux笔记]gcc/g++,动静态库,make/makefile/.PHONY

都是编译器&#xff0c;二者的选项是重叠的 基本上&#xff0c;gcc专门用于编译c&#xff0c;g专门用于编译c gcc/g形成的可执行程序默认是release版的。若要debug版&#xff0c;则使用-g选项。 如&#xff1a;gcc -o mytest test.c -g -stdc99 编译命令格式例&#xff1a; gc…

MYSQL-死锁大集合

为什么会死锁 数据准备 建个表 CREATE TABLE t_order (id int NOT NULL AUTO_INCREMENT,order_no int DEFAULT NULL,create_date datetime DEFAULT NULL,PRIMARY KEY (id),KEY index_order (order_no) USING BTREE ) ENGINEInnoDB ; 存个数据 然后我们分别创建两个事务 事…

【多模态】16、DetCLIP | 构建超大词汇字典来进行开放世界目标检测

论文&#xff1a;DetCLIP: Dictionary-Enriched Visual-Concept Paralleled Pre-training for Open-world Detection 代码&#xff1a;无。。。 出处&#xff1a;NIPS2022 | 华为诺亚方舟 | 中山大学 | 香港科技大学 效果&#xff1a; 在 LVIS 的 1203 个类别上超越了 GLIP…

每月进度总结 7月1日~7月22日

一个月已经过了三分之二了&#xff0c;感觉这个月是在学校学的很多。也是最充实的三个星期。其中也有发呆&#xff0c;也有过懊悔&#xff0c;今天状态为什么这么差&#xff0c;就学了这一点。但是还有学到知识的喜悦。总之是认识到了自己的很多不足&#xff0c;也找到了相对正…

conda在D盘创建虚拟环境

1.安装Anaconda 略 2.修改镜像源 清华的镜像源好像不能用了。交大的镜像源还能使用。 winr 输入&#xff1a; %HOMEPATH% 进入C盘的用户目录。找到.condarc的文件。打开它&#xff0c;把里面的镜像内容修改为以下内容 channels:- https://mirrors.sjtug.sjtu.edu.cn/anaco…

华硕ROG枪神6plus原装Windows11预装系统 工厂模式恢复安装带ASUSRecevory一键还原安装还原方法

华硕ROG枪神6plus原装Windows11预装系统 工厂模式恢复安装带ASUSRecevory一键还原安装还原方法 第一步&#xff1a;需要拥有文件格式为6个底包的文件 第二步&#xff1a;创建系统u盘 第三步&#xff1a;复制文件到u盘之后&#xff0c;启动华硕工厂模式 第四步&#xff1a;按…

python安装第三方包的两种方式

最近研究QQ空间、微博的&#xff08;爬虫&#xff09;模拟登录&#xff0c;发现都涉及RSA算法。于是需要下一个RSA包&#xff08;第三方包&#xff09;。折腾了很久&#xff0c;主要是感觉网上很多文章对具体要在哪里操作写得不清楚。这里做个总结&#xff0c;以免自己哪天又忘…