Python界面化编程可以通过PyQt5实现,PyQt5功能是对UI的排版,后台功能函数通过Python实现。
PyQt5可以直接在官网下载,安装即可。
我是用的是Anaconda,集成了Python与PyQt5,不需要再安装PyQt5。
在D:\Anaconda\Library\bin中找到designer.exe,打开进入一下UI排版界面。
启动以后的对话框里“新建窗体”选择Main Window,然后直接创建,然后就直接形成了一个画布。
在左侧的widget box里面的input widget 中拖拽三个Text Edit控件到画布中,用来存放计算的两个数和结果。在Button中拖一个Push Button用于实现出发计算的事件按钮。注意的是在右侧的属性编辑器窗口中QObject中每个空间的属性值要注意,因为涉及到后期函数作用到该对象的唯一识别码。
下面就是给这四个控件进行赋值和添加Button的点击函数了。
三个Text Edit我们不用编辑 只需要对其进行赋值即可。
PushButton需要预先给它赋一个函数,通过上图中 编辑信号/槽 实现,在左上角 设置(s) 的下面。
将该ui格式文件保存在指定的文件夹下面,将ui格式的文件转换位python文件。
E:\PyCharm\PythonFile\PyQt5>pyuic5 -o UIcode.py plussUI.ui
执行该命令。
页面编辑出来的python文件为一下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'plussUI.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!
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")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(40, 70, 104, 71))
self.textEdit.setObjectName("textEdit")
self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_2.setGeometry(QtCore.QRect(230, 70, 104, 71))
self.textEdit_2.setObjectName("textEdit_2")
self.textEdit_3 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_3.setGeometry(QtCore.QRect(460, 70, 104, 71))
self.textEdit_3.setObjectName("textEdit_3")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(250, 190, 75, 23))
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(150, 100, 54, 12))
self.label.setObjectName("label")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
self.menubar.setObjectName("menubar")
self.menuPlusDemo = QtWidgets.QMenu(self.menubar)
self.menuPlusDemo.setObjectName("menuPlusDemo")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.menubar.addAction(self.menuPlusDemo.menuAction())
self.retranslateUi(MainWindow)
self.pushButton.clicked.connect(MainWindow.add_clicked)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.label.setText(_translate("MainWindow", " +"))
self.menuPlusDemo.setTitle(_translate("MainWindow", "PlusDemo"))
最后给该界面编辑功能函数
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow
from UI import Ui_MainWindow
class PyQtMainEntry(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
def add_clicked(self):
x = int(self.textEdit.toPlainText())
y = int(self.textEdit_2.toPlainText())
result = x + y
self.textEdit_3.setText(str(result))
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = PyQtMainEntry()
window.show()
sys.exit(app.exec_())
运行该程序得到
一次为例还可以延申出很多python的界面话编程。