前言
今天和大家分享一款通过Pyqt5制作的测试系统小程序,适合初学者,首先通过动图展示一下登录界面及主界面。

这个程序的全部制作过程和关键源码作者会通过几天的时间全部整理成博客形式,后续想要全部代码的同学请关注我并且收藏本文哦~
第一篇主要介绍登录界面的制作方法,包括UI文件导入,我们直接进入正题。
登录界面制作
登录界面主要通过QT Designer进行设计(关于QT Designer的安装可以参考上一篇博客),下图中右侧的对象选择器处可以看到各层级关系。大体思路是在QT Designer主界面创建一个Form,加入两个文本框Edit,一个Button,以及一个Frame用于填写标题和Logol。整个界面完成后重命名各个模块,之后保存,保存后的文件是为尾缀为.ui的界面程序文件。

登录界面导入
重点来了朋友们这里介绍两种UI导入方式:
- 第一种:重写UiLoader类,然后调用UiLoader().loadUi方法,类代码如下:
class UiLoader(QUiLoader):
_baseinstance = None
def createWidget(self, classname, parent=None, name=''):
if parent is None and self._baseinstance is not None:
widget = self._baseinstance
else:
widget = super(UiLoader, self).createWidget(classname, parent, name)
if self._baseinstance is not None:
setattr(self._baseinstance, name, widget)
return widget
def loadUi(self, uifile, baseinstance=None):
self._baseinstance = baseinstance
widget = self.load(uifile)
QMetaObject.connectSlotsByName(widget)
return widget
问题一: 有人会问,为什么要把.ui文件通过UiLoader等方法导入,而不是转换为.py文件呢?
回答: 因为在制作界面的过程中,.ui文件总是需要调整,如果每次调整都需要转换为.py会很繁琐,所以我们直接把.ui文件导入。这样每次更新后的界面就可以直接体现在程序中。
问题二: 为什么要重写,而不是直接调用系统第三方库UiLoader?
回答: 因为调用后也可以成功,但是小程序窗口将无法响应鼠标点击事件,无法实现窗口的移动。但是这种方法也有一个缺点,就是如果图形界面的主窗口采用了一些布局方式,如垂直布局,格栅布局,包括一些alignment等,布局方式可能会失效。因此,这里推荐第二种方式导入,如下。
- 第二种:先创建一个主窗口,然后把程序界面导入到主窗口中,这样就会成为主窗口的下一级子窗口。子窗口的布局形式是直接能够完全体现的。代码如下:
- 详细原理可以参考我收藏的这篇文章:
https://blog.csdn.net/weixin_45877312/article/details/124738138
class Window_Main(QWidget):
def __init__(self):
super(Window_Main, self).__init__()
loader = QUiLoader()
path = os.fspath(Path(__file__).resolve().parent / "untitled.ui")
''' "main_window.ui" 为ui文件名 '''
ui_file = QFile(path)
ui_file.open(QFile.ReadOnly)
self.ui_main = loader.load(ui_file)
self.load_ui(self)
ui_file.close()
def load_ui(self, obj):
obj.setObjectName("obj")
# 生成对象->顶层
obj.resize(800, 480)
# 设置窗口大小
self.horLayout = QHBoxLayout(obj)
# 设置顶层窗口布局,布局样式随意均可
self.horLayout.setObjectName("mainWin_HLayout")
# 设置布局名称
## # Set main background to transparent
# obj.setAttribute(Qt.WA_TranslucentBackground)
# 设置窗口名称
obj.setWindowTitle("VIP MainWindow")
obj.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) # 置顶,且去掉边框
# 消除顶层窗口布局的边缘大小,当然可以根据自身需求,保留或其他修改
self.horLayout.setContentsMargins(0, 0, 0, 0)
# 将ui窗口放入生成的顶层窗口的布局中
self.horLayout.addWidget(self.ui_main)
这样导入的文件就可以直接使用了,不过要记住self.ui_main才是你的窗口。
下一节介绍如何获取鼠标响应时间,登录名及密码规则等相关自定义函数。
本文是Pyqt5制作测试系统小程序系列的第一篇,主要讲解如何创建登录界面并导入UI文件。使用QT Designer设计界面,然后通过两种方法介绍UI文件的导入,包括重写UiLoader类和在主窗口中导入子窗口。文中还探讨了为何不直接将.ui转换为.py以及重写UiLoader的原因。
_登录界面制作及导入】&spm=1001.2101.3001.5002&articleId=128735947&d=1&t=3&u=05ee30b6e1d34763a8a2a346e155923e)
6073

被折叠的 条评论
为什么被折叠?



