QT界面建立(Python)

工具:QTdesigner+pycharm+py3.6+pyui(转换工具)

QTpython语言文件的生成

QTdesigner作为可视化编程软件,上手很容易。首先通过QTdesigner编写界面,这里的编写可以不需要加入槽函数,等待可视化编写完成后,再通过对源文件添加语句来实现函数的调用。

下图就是编程界面,有许多控件等以后在学习

编程完成后保存为.ui格式的文件(最后一行),要保存在python工程文件夹下,这样好操作

生成我文件之后,使用PyUI脚本将.ui文件转换为.py文件,这样就可以用python的眼光对我们编写的界面进行解读和操作了

注意:别点错文件,不然也给转换了,就啥都没了,而且无法复原

QT程序的调用

写好了界面程序,我们在进行函数的绑定之前,先看看界面运行的样式,这也是一个重点,由刚才转换而来的文件不管是否编写槽函数,都是没有启动函数的,比如我写的很简单的一个界面,只有一个按键和一个图片显示窗口。可以很直观地看出,这个界面由一个大的类(class)组成,类有两个成员setuoUi和retranslateUi,后者就是就是专门做的一个重新设置翻译文件的操作,不用管,主要是如何使用前者

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

# Form implementation generated from reading ui file 'UI_Sti.ui'

#

# Created by: PyQt5 UI code generator 5.15.7

#

# 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_Form(object):

def setupUi(self, Form):

Form.setObjectName("Form")

Form.resize(938, 722)

self.OnlyOne = QtWidgets.QPushButton(Form)

self.OnlyOne.setGeometry(QtCore.QRect(420, 620, 93, 28))

self.OnlyOne.setObjectName("OnlyOne")

self.PictureShow = QtWidgets.QLabel(Form)

self.PictureShow.setGeometry(QtCore.QRect(0, 0, 941, 561))

self.PictureShow.setMouseTracking(False)

self.PictureShow.setStyleSheet("")

self.PictureShow.setFrameShape(QtWidgets.QFrame.Box)

self.PictureShow.setFrameShadow(QtWidgets.QFrame.Sunken)

self.PictureShow.setText("")

self.PictureShow.setObjectName("PictureShow")

self.retranslateUi(Form)

QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):

_translate = QtCore.QCoreApplication.translate

Form.setWindowTitle(_translate("Form", "Form"))

self.OnlyOne.setText(_translate("Form", "begin"))

直接运行这个程序是不会有任何反应的,通过写的函数就可以换看出来,就一个类,连调用都没有,所以我们需要调用函数来把自己写的窗口调用出来(以下代码加在程序最后就好了,注意if是顶格的哦)

if __name__ == "__main__":

app = QApplication(sys.argv)

UI = QtWidgets.QWidget()

window = Ui_Form()

window.setupUi(UI)

UI.show()

sys.exit(app.exec_())

头文件对应着要加入这些模块

from PyQt5 import QtCore, QtGui, QtWidgets #这个自动已经加了,再加下面两个就好

from PyQt5.QtWidgets import QApplication

import sys

解释下QApplication函数和sys模块。(详细的解释点击连接,讲的很清楚)

QApplication可以理解为初始化函数,他像一个管家,你在建新UI界面之前,要确定这样一个管家来管理你之后要进行的一切有关UI界面的操作,这个管家是唯一的,请一位就够了,他会处理输入给他的“事件”,将这些事件传递给你的一系列UI界面的部件。

sys模块则是系统模块,主要是可以监控你运行程序的时候进行的输入操作,和你想对系统进行的操作,比如代码中用到的sys.arg,调用返回命令行参数List,第一个元素是程序本身路径,第二个开始就是你对系统的输入,我们看一下他输出的是什么

['D:\\pycharm\\pycharmfile\\BS\\UI_Sti.py']

可以看出是ui文件的路径,我的理解是他要在程序运行的环境部署一个qt环境,所以要读取周围环境怎么样,使用sys.arg函数来读取本地环境然后传送给QApplication这个管家,这个管家搭出一个运行QT界面的环境,也就是初始化

然后是sys.exit(status)函数,当status=0的时候,程序退出;app.exec_()则是QApplication对象的属性,当你关闭ui界面(点右上角的x)的时候,返回值为0,搭配sys.exit(status)就等于关闭ui界面,app.exec()返回0,整个程序也随之关闭

搞定开始和结束后,我们看一下中间部分。代码显示我们首先创建了一个QWidget窗口,这个可以理解为定义了一个空白变量,先声明出来,然后再进行操作(像C语言一样)。注意区分QtWidgets和QWidget,QWidget就是窗口控件,他有两个子类QMainwindow和QDialog也经常使用(区别),具体建新哪一个要和你创建的ui文件对应好,我的ui文件就是基于QWidget的

UI = QtWidgets.QWidget()

然后实例化一个咱们自己编写的ui界面的类,相当于把模板拿过来实现了,现在window这个变量拥有了Ui_Form()里面的功能,拿着window就可以对你建新的窗口进行规范化

window = Ui_Form()

规范化,将咱们编写好的界面的样子,在UI这个QWidget()窗口上实现

window.setupUi(UI)

UI.show()

如果不规范化

if __name__ == "__main__":

app = QApplication(sys.argv)

print(sys.argv)

UI = QtWidgets.QWidget()

# window = Ui_Form()

# window.setupUi(UI)

UI.show()

sys.exit(app.exec_())

以上就是对编写好的QT界面进行调用建立的过程。

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: