PyQt5随笔:Qtdesigner设计转换而来的界面.py文件两种调用方式

PyQt5随笔:Qtdesigner设计转换而来的界面.py文件两种调用方式



1.前言

学习PyQt5有有一段时间了,但在对Qtdesigner设计转换而来的界面.py文件的调用方式上还是很糊涂。。

大多时候是另建一个.py文件调用来预览使用界面,可以做到界面和逻辑代码分开方便UI代码和逻辑代码的管理修改。

但有时写一些很小的界面程序,想直接调用转换的.py文件预览界面;因为还不是很决定UI设计的是不是符合要求,因为还没有设计逻辑代码,所以还不想另建一个.py文件调用。

这两种调用方式在最后的界面生成代码是相似的,我就是在这经常搞混它们。。。

如果想汉化 PyQt5 设计工具 designer 可以看一下这篇文章【PyQt5随笔:Qt Designer的汉化(包括汉化包)


2.方式一:另建 py 文件调用 ui 文件

调用代码:blacklist_call.py:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow,QWidget,QDialog
from PyQt5 import QtCore

#引用UI文件,根据设计的界面类型选择继承窗口类型,如:QMainWindow -> Ui_MainWindow,QWidget->Ui_Form,QDialog同样
from blacklist import Ui_Form

#Widget界面时 ->(QWidget,UI_Form),QDialog-->(QDialog, Ui_Dialog),MainWindow类似
class MyWindow(QWidget, Ui_Form):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        self.setupUi(self)
        """
        下面可以写一下初始化操作
        """
if __name__ == "__main__":
    #适配2k等高分辨率屏幕
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
    app = QApplication(sys.argv)
    myWin = MyWindow()
    myWin.show()
    sys.exit(app.exec_())

注:代码说明

第6句:from blacklist import Ui_Form

代码解释也说了,一定要注意调用 ui 文件的窗口类型,填写引用类名,默认的是QMainWindow -> Ui_MainWindow,QWidget->Ui_Form,QDialog - >Ui_Dialog

第9 句:class MyWindow(QWidget, Ui_Form):

这个也和第六句一样,注意 ui 文件窗口类型。

第18句:是解决高分辨率屏幕pyqt程序界面显示不完整错误的,如果是低分辨率屏幕可以不用。

第10 句:如果没有父类,parent=None和下面一句的parent可以不用写

UI代码:blacklist.py

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

# Form implementation generated from reading ui file 'blacklist.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(342, 117)
        self.horizontalLayout = QtWidgets.QHBoxLayout(Form)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtWidgets.QLabel(Form)
        self.label.setMinimumSize(QtCore.QSize(150, 0))
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setMaximumSize(QtCore.QSize(40, 16777215))
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem1)
        self.pushButton_3 = QtWidgets.QPushButton(Form)
        self.pushButton_3.setMaximumSize(QtCore.QSize(40, 16777215))
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem2)
        self.pushButton_2 = QtWidgets.QPushButton(Form)
        self.pushButton_2.setMaximumSize(QtCore.QSize(40, 16777215))
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)

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

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "图片"))
        self.pushButton.setToolTip(_translate("Form", "<html><head/><body><p>移出黑名单</p></body></html>"))
        self.pushButton.setText(_translate("Form", "移出"))
        self.pushButton_3.setToolTip(_translate("Form", "<html><head/><body><p>用默认软件打开图片</p></body></html>"))
        self.pushButton_3.setText(_translate("Form", "打开"))
        self.pushButton_2.setToolTip(_translate("Form", "<html><head/><body><p>删除图片</p></body></html>"))
        self.pushButton_2.setText(_translate("Form", "删除"))

调用生成界面如下图:

在这里插入图片描述


3.方式二:在 ui 的 py 文件下面直接调用

在刚才 blacklist.py 下面添加如下代码即可

if __name__ == "__main__":
    import sys
    from PyQt5 import QtCore
    #适配2k等高分辨率屏幕
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
    app = QtWidgets.QApplication(sys.argv)
    Window = QtWidgets.QMainWindow()#注意窗口类型
    ui = Ui_Form()
    ui.setupUi(Window)
    Window.show()
    sys.exit(app.exec_())

成功运行调用生成和方式一同样的界面:

11

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值