赞
踩
这一段时间想学习一些python 图形界面的东东,经查询资料得知,使用通过PySide6模块使用QT界面 还是比较靠谱的,于是下载安装了PySide6 ,安装很顺利,使用 pip install pyside6 即可。但是发现QT的类包太多了,不知道从何学起,于是就想先了解一下QT包中的相关一些信息,尝试着做出以下界面。踩过的一些坑,也得到了一些经验,在此记录。
目标:给出一个包模块或一个类,列出其下面的模块、类及函数方法。
一开始想着使用 dir(),发现dir 能显示的均是已经加载过的模块,还是必须在同一个文件中import 过的才可以。试着使用 importlib 动态导入模块,发面 dir 出来的东东不全,几经试验以后来发现 inspect 中的 getmembers() 可以使用。看下图
左边是一个QTreeWidget ,用于树状列表显示模块的相关信息。右边是一个辅助信息展示界面。同时下面的搜索也展示到右边的QListWidget 上面。设置导出功能,可将树状显示的内容按同样的格式保存到文本文件,供模块查询学习。
图形界面开发:
使用Qt设计师,安装PySide6 后默认安装了pyside6-designer.exe和pyside6-uic.exe,使用 pycharm 的设置 External Tools 添加设计工具的转换工具。
pyside6 Designer:Program:程序是安装的 pyside6-designer.exe
Arguments:参数设置$FilePath$,文件全路径
工作目录:设置$FileDir$ ,文件目录。
同样对UIC转换工具进行设置:
pyside6 UIC:Program:程序是安装的 pyside6-uic.exe
Arguments:参数设置$FilePath$ -o $FileDir$\$FileNameWithoutExtension$.py
工作目录:设置$FileDir$ ,文件目录。
UIC工具是将图形界面文件转成py文件。
命令行为 uic.exe 文件.ui -o 输出文件全路径.py 。以上设置为同名同目录输出py文件。
设置完成后就可以通过右键菜单打开图形界面设计器。
界面很简单,拖拉拽几个按钮,两个单行文本,一个tree Widget, 一个list widget 。主要说明 的是如何布局。
从图中可以看到,使用了三个横向布局,表单采用一个纵向布局。布局比例可以使用layoutStretch 这个属性去调整。
每个组件一个数字,为占用整体布局的比例。
这里有个参数 QTreeWidget 的一个属性需要设置隐藏一下:
该属性置为不可见,意思树状视图中 不显示标题栏
界面保存后,使用UIC转成py文件代码 ,如下,由于是机器自动生成的,可读性不是太好,不建议在此文件中直接进行修改。
- # -*- coding: utf-8 -*-
-
- ################################################################################
- ## Form generated from reading UI file 'mainui.ui'
- ##
- ## Created by: Qt User Interface Compiler version 6.4.0
- ##
- ## WARNING! All changes made in this file will be lost when recompiling UI file!
- ################################################################################
-
- from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
- QMetaObject, QObject, QPoint, QRect,
- QSize, QTime, QUrl, Qt)
- from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
- QFont, QFontDatabase, QGradient, QIcon,
- QImage, QKeySequence, QLinearGradient, QPainter,
- QPalette, QPixmap, QRadialGradient, QTransform)
- from PySide6.QtWidgets import (QApplication, QHBoxLayout, QHeaderView, QLabel,
- QLineEdit, QListWidget, QListWidgetItem, QPushButton,
- QSizePolicy, QSpacerItem, QTreeWidget, QTreeWidgetItem,
- QVBoxLayout, QWidget)
-
- class Ui_myinfo(object):
- def setupUi(self, myinfo):
- if not myinfo.objectName():
- myinfo.setObjectName(u"myinfo")
- myinfo.resize(1011, 622)
- myinfo.setStyleSheet(u"*{\n"
- "font: \"Microsoft YaHei UI\";\n"
- "font-size:16pt;\n"
- "color:rgb(0, 170, 255);\n"
- "}\n"
- "")
- self.verticalLayout = QVBoxLayout(myinfo)
- self.verticalLayout.setObjectName(u"verticalLayout")
- self.horizontalLayout = QHBoxLayout()
- self.horizontalLayout.setObjectName(u"horizontalLayout")
- self.label = QLabel(myinfo)
- self.label.setObjectName(u"label")
-
- self.horizontalLayout.addWidget(self.label)
-
- self.txtInput = QLineEdit(myinfo)
- self.txtInput.setObjectName(u"txtInput")
-
- self.horizontalLayout.addWidget(self.txtInput)
-
- self.cmdSubmit = QPushButton(myinfo)
- self.cmdSubmit.setObjectName(u"cmdSubmit")
-
- self.horizontalLayout.addWidget(self.cmdSubmit)
-
- self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
-
- self.horizontalLayout.addItem(self.horizontalSpacer_3)
-
- self.cmdfile = QPushButton(myinfo)
- self.cmdfile.setObjectName(u"cmdfile")
-
- self.horizontalLayout.addWidget(self.cmdfile)
-
- self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
-
- self.horizontalLayout.addItem(self.horizontalSpacer_2)
-
- self.horizontalLayout.setStretch(0, 1)
- self.horizontalLayout.setStretch(1, 6)
- self.horizontalLayout.setStretch(2, 1)
- self.horizontalLayout.setStretch(3, 1)
- self.horizontalLayout.setStretch(4, 1)
- self.horizontalLayout.setStretch(5, 1)
-
- self.verticalLayout.addLayout(self.horizontalLayout)
-
- self.horizontalLayout_2 = QHBoxLayout()
- self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
- self.tvInfo = QTreeWidget(myinfo)
- __qtreewidgetitem = QTreeWidgetItem()
- __qtreewidgetitem.setText(0, u"name");
- self.tvInfo.setHeaderItem(__qtreewidgetitem)
- self.tvI
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。