python gui可视化开发工具,python怎么可视化开发

本篇文章给大家谈谈python gui可视化操作界面制作,以及python可视化界面开发工具,希望对各位有所帮助,不要忘了收藏本站喔。

0 建议学时

4学时,在机房进行

1 开发环境安装及配置

1.1 编程环境

安装PyCharm 2023.1 (Community Edition)
安装PyQt6

pip install PyQt6
pip install pyqt6-tools

1.2 环境配置

在这里插入图片描述
选择“Tools/External Tools”选项,单击添加“+”按钮,即可弹出外部工具配置窗口:
在这里插入图片描述
在弹出的外部工具配置窗口中,输入外部工具名称,这里用QtDesigner表示,接着输入Anaconda安装环境中的PyQt界面设计师可执行文件完整路径以及工作路径配置参数:
在这里插入图片描述
设置完后“Tools/ExternalTools”栏中增加了QtDesigner。
在这里插入图片描述
与上一节中配置QtDesigner外部工具操作一致,在“Tools/ExternalTools”中继续单击添加“+”按钮,命名为PyUCI
在这里插入图片描述

2 PyQT的基础

常用模块:

  • QtWidgets:包含了一整套UI元素控件,用于建立符合系统风格的界面;
  • QtGui:涵盖了多种基本图形功能的类(字体, 图形,图标,颜色);
  • QtCore:涵盖了包的核心的非GUI功能(时间,文件,目录,数据类型,文本流,链接,线程进程);

2.1 窗口显示

import sys  # 系统内置类
from PyQt5.Qt import *  # 主要包含了我们常用的一些类,汇总到了一块

if __name__ == '__main__':
	# 创建一个应用程序对象
	app = QApplication(sys.argv)
	# 创建一个空白控件(窗口)
	window = QWidget()
	# 设置窗口标题
	window.setWindowTitle("计时器")
	# 设置窗口尺寸
	window.resize(500, 500)
	# 移动窗口位置
	window.move(200, 200)
	# 创建label控件
	label = QLabel(window)
	# 为控件设置文本
	label.setText("hello")
	# 移动控件的位置
	label.move(160, 160)
	# 显示窗口
	window.show()
	# 进入程序的主循环,并通过exit函数确保主循环安全结束
	sys.exit(app.exec_())

2.2 PyQt5程序结构分析

  1. 导入需要的包和模块
from PyQt5.Qt import *
import sys  
  1. 创建一个应用程序对象
# 创建一个应用程序对象
app = QApplication(sys.argv)
  1. 控件的操作:创建控件,设置控件(大小,位置,样式),事件,信号的处理
  • 创建控件
    当我们创建一个控件之后,如果这个控件没有父控件,则把它当作顶层控件(窗口),系统会自动的给窗口添加一些装饰(标题栏),窗口控件具备一些特性(设置标题,图标);
# 创建一个空白控件(窗口)
window = QWidget()    
# 设置窗口标题
window.setWindowTitle("计时器")
# 设置窗口尺寸
window.resize(500, 500)
# 移动窗口位置
window.move(200, 200)
  • 设置控件
    控件也可以作为一个容器(承载其他的控件);
# 创建label控件
label = QLabel(window)
# 为控件设置文本
label.setText("hello")
# 移动控件的位置
label.move(160, 160)
  • 展示控件
    🔰刚创建好一个控件之后,(这个控件没有什么父控件),默认情况况下不会被显示,只有手动的调用show(0才可以显示;
    🔰如果这个控件有父控件,那么一般情况下,父控件展示后,子控件会自动展示;
# 显示窗口
window.show()
  1. 应用程序的执行,进入到消息循环
    🔰让整个程序开始执行,并且进入到消息循环(无限循环);
    🔰检测整个程序所接受到的用户的交互信息;
# 进入程序的主循环,并通过exit函数确保主循环安全结束
sys.exit(app.exec_())

2.3 窗口属性设置

属性描述
window.serGeometry(300, 300, 300, 200)前两个参数定义了move;后两个参数定义了resize
window.move(400, 300)设置窗口左上顶端的坐标
window.resize(500, 500)设置窗口的宽度,高度
window.setWindowTitle(‘计算器’)设置窗口标题
window.setWindowIcon(QIcon(‘t1.jpg’))设置窗口logo

3 界面设计

在项目文件夹的Pycharm开发环境中,打开前面配置的外部工具QtDesigner:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
右键ui界面文件,选择“Tools/ExternalTools/PyUCI”(前面配置的外部工具),即可自动生成Python程序代码:
在这里插入图片描述
类与对象:
在这里插入图片描述

class Y:
    def __init__(self):
        self.a = 0
        self.b = 0
    def value(self, t):
        return self.a + self.b + t
y = Y() #创建实例(对象)
y.a=1
y.b=2
v = y.value(2) #计算函数值

界面代码:

from PyQt6 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(591, 125)
        self.centralwidget = QtWidgets.QWidget(MainWindow) #QWidget 是用户界面的原子
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(430, 20, 131, 41))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(10)
        ...
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

4 程序逻辑编写

新建文件ff.py:

import sys
from mygui import *    #界面生成的python文件名
from PyQt6.QtWidgets import QApplication, QMainWindow

class MyMainWindow(QMainWindow, Ui_MainWindow):   #界面生成的python文件中类名
    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.pushButtonClicked)  #指定按键代码

    def pushButtonClicked(self):   #按键后执行的代码
        data1 = float(self.textEdit.toPlainText())
        data2 = float(self.textEdit_2.toPlainText())
        self.textEdit_3.setText(str(data1+data2))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWin = MyMainWindow() #新建一个窗口实例
    myWin.show()  #显示窗口
    sys.exit(app.exec())

运行程序:
在这里插入图片描述
【例1】加法器
在这里插入图片描述

self.pushButton.clicked.connect(self.pushButtonClicked)

def pushButtonClicked(self):   
	data1 = float(self.textEdit.toPlainText())
	data2 = float(self.textEdit_2.toPlainText())
	self.textEdit_3.setText(str(data1+data2))

【例2】计算器
在这里插入图片描述

self.pushButton_0.clicked.connect(self.pushButton0Clicked)
def pushButton0Clicked(self):    
	self.textEdit.setText(str(self.textEdit.toPlainText() + "0"))

self.pushButton_add.clicked.connect(self.pushButtonAddClicked)
def pushButtonAddClicked(self):
	self.textEdit.setText(str(self.textEdit.toPlainText() + "+"))

def pushButtonEqualClicked(self):
	try:
		self.textEdit.setText(str(eval(self.textEdit.toPlainText())))
	except:
		QMessageBox.critical(self, "Question", "表达式不正确!",QMessageBox.Ok, QMessageBox.Ok)

【例3】图片处理
在这里插入图片描述

from PyQt6.QtWidgets import QApplication, QMainWindow,QFileDialog
from PIL import Image
from PIL import ImageFilter
    self.path = ""
    self.pushButton_Open.clicked.connect(self.openimage)
    self.pushButton_GetBorder.clicked.connect(self.FindBorder)

def openimage(self):
	imgName, imgIType = QFileDialog.getOpenFileName(None,"导入图片","", "*.jpg;;*.png;;All Files(*)")
	jpg = QtGui.QPixmap(imgName).scaled(self.label.width(), self.label.height())
	self.label.setPixmap(jpg)
	self.path = imgName 
    # self.textEdit.setText('')
    
def FindBorder(self):
	if self.path!="" :
	im=Image.open(self.path)
	om=im.filter(ImageFilter.CONTOUR)
	om.save("1.jpg")
	jpg = QtGui.QPixmap("1.jpg").scaled(self.label_out.width(), self.label_out.height())    
	self.label_out.setPixmap(jpg)

【例4】蒙特卡罗求定积分
在这里插入图片描述

self.pushButton_cal.clicked.connect(self.Calculate)
def MCint_area(self,f, a, b, n, fmax):
	below = 0
	for i in range(n):
		x = np.random.uniform(a, b)
		y = np.random.uniform(0, fmax)
		if 0 <= y <= f(x):
			below += 1
			area = below / n * (b - a) * fmax
			return area
def f1(self,x):
	y=0
	y=eval(self.textEdit_f.toPlainText())
	return y

def Calculate(self):
	a=int(self.textEdit_a.toPlainText())
	b = int(self.textEdit_b.toPlainText())
	n=int(self.textEdit_Count.toPlainText())
	fmax = int(self.textEdit_fmax.toPlainText())
	area=0
	try:
		area=self.MCint_area(self.f1, a, b, n, fmax)
	except:
		QMessageBox.critical(self, "Question", "表达式不正确,无法计算!")
	
	self.textEdit_result.setText(str(area))

5 生成EXE

安装pyinstaller包
使用pip install安装命令即可pyinstaller编译包,
也可以在Anaconda Prompt下实现安装用python代码画雪人
在这里插入图片描述

pip install PyInstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述
编译不成功在项目文件夹下也会产生一个与项目名称相同的.spec文件
可用pycharm打开,查看问题
在这里插入图片描述

6 作业

制作一个与本专业有关的有界面程序,在窗口上写上姓名与学号。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习成绩管理系统是一个基于Python的图形用户界面(GUI可视化的软件应用。它的主要目的是帮助学校、教师或学生进行学生成绩的管理和分析。下面将介绍它的主要特点和功能。 首先,学习成绩管理系统具有用户友好的界面,使用者可以通过直观的图形界面进行操作,无需编写代码或者使用复杂的命令行指令。这对于那些不熟悉编程的人员来说是非常方便的。 其次,系统具有学生成绩录入功能。教师或管理员可以通过系统输入学生的基本信息和成绩数据,并将其保存在数据库中。这样一来,学生成绩就可以方便地集中管理,而且可以随时进行修改和查询。 另外,系统还提供了成绩报表生成功能。用户可以根据需要选择生成各种类型的报表,包括按班级、科目、年级等进行统计和分析。这些报表可以直观地展示学生成绩的分布情况,帮助教师和学校更好地了解学生的学习情况。 此外,系统还支持成绩数据的导入和导出功能。用户可以将已有的成绩数据导入系统中,也可以将系统中的数据导出为Excel或者CSV等格式,方便与其他软件进行交互和共享。 最后,学习成绩管理系统还具有权限管理功能。管理员可以对系统进行设置,不同的用户拥有不同的权限,以保证系统数据的安全性和隐私性。 综上所述,学习成绩管理系统通过Python编程语言GUI可视化技术,提供了一种简单易用、功能丰富的学生成绩管理工具。它使得学校、教师和学生能够更方便地管理和分析学生成绩数据,提高教学和学习的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值