专业的编程技术博客社区

网站首页 > 博客文章 正文

PyQt5-2简单UI体验之pymprog应用(pyqt5 pycharm)

baijin 2024-08-16 11:39:10 博客文章 7 ℃ 0 评论

这货很强大,必须掌握。

接着上篇线性规划的实现,本篇利用PyQt5开发简化UI实现上篇的功能。

  1. UI界面设计,利用designer.exe设计UI界面

其中用到的控件有Push Button、Line Edit、Label、LCD Number、Group Box、Widget.

其中Widget要提升为qtpandas类(后续介绍)

下面就是设计好的UI界面:

运行后的结果:

代码:

UI代码:LPUITest.py

略(用.ui文件转换为py)

tool.py见pyqt5-1初体验.ui转化.py

Pymprog_case.py见运筹优化3-线性规划算法及应用

LPUIRun.py:

from PyQt5.QtWidgets import *

from PyQt5.QtCore import *

from PyQt5.QtGui import *

from LPUITest import Ui_MainWindow

from qtpandas.models.DataFrameModel import DataFrameModel

import pandas as pd

import numpy as np

import sys

from pymprog_case import *

class MainWindow(QMainWindow, Ui_MainWindow):

def __init__(self, parent=None):

super(MainWindow, self).__init__(parent)

self.setupUi(self)

self.ordermodel = DataFrameModel()

self.capacitymodel = DataFrameModel()

self.resultsmodel = DataFrameModel()

self.widget.setViewModel(self.ordermodel)

self.widget_3.setViewModel(self.capacitymodel)

self.widget_2.setViewModel(self.resultsmodel)

def openfile(self):

openfile_name = QFileDialog.getOpenFileName(self, '选择文件', '', 'Excel files(*.xlsx)')

return openfile_name

@pyqtSlot()

def on_pB_readOrder_clicked(self):

filedir = self.openfile()[0]

self.orderdata = pd.read_excel(filedir, 'Sheet1')

self.lE_readOrder.setText(filedir)

self.ordermodel.setDataFrame(self.orderdata)

@pyqtSlot()

def on_pB_readCapa_clicked(self):

filedir = self.openfile()[0]

self.capacitydata = pd.read_excel(filedir, 'Sheet1')

self.lE_readCapa.setText(filedir)

self.capacitymodel.setDataFrame(self.capacitydata)

@pyqtSlot()

def on_pB_cal_clicked(self):

capacitydata = self.capacitydata.set_index(['Month'])['Capacity'].to_dict()

out, y = capacityOpti(self.orderdata, capacitydata)

optiResults = resultsOutDataFrame(self.orderdata, out)

self.lcdNumber.display(str(int(y)))

self.resultsmodel.setDataFrame(optiResults)

#optiResults.to_excel('reslts.xlsx', index=False)

if __name__ == "__main__":

app = QApplication(sys.argv)

ui = MainWindow()

ui.show()

sys.exit(app.exec_())


运筹优化系列,下期进入启发式优化算法。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表