为热电计算程序加了个Gui | 寒山烟雨
现在的位置: 首页 > 小试身手 > 正文

为热电计算程序加了个Gui

2014年11月03日 小试身手 ⁄ 共 2208字 ⁄ 字号 评论 1 条 ⁄ 阅读 3,829 views 次

给刘老师热电的计算程序加了个qt的GUI,核心程序是用Fortran写的。原本是打算把代码编译成pyd,结果f2py模块各种问题,最后无奈,用qt把参数保存成文件作为输入。鉴于版权问题,刘老师的热电源程序就不给出来了。

PS:由于matplotlib读取文件有些麻烦,所以,就没整绘图的部分。

 Python | 
 
 copy code |
?

01
#coding=utf-8
02
import os
03
import matplotlib.pyplot as mp
04
from PyQt4 import QtGui,QtCore
05
import sys
06
 
07
class Window(QtGui.QWidget):
08
    def __init__(self):
09
        super(Window,self).__init__()
10
        self.setWindowTitle(u"热电计算")
11
        self.resize(300,400)
12
        self.gridlayout = QtGui.QGridLayout()
13
 
14
        self.L=QtGui.QLabel(u"透射点数:")
15
        self.Ways=QtGui.QLabel(u"扫描方式:")
16
        self.W_s=QtGui.QLabel(u"起始数据:")
17
        self.W_e=QtGui.QLabel(u"终止数据:")
18
        self.W_ss=QtGui.QLabel(u"步长:")
19
        self.D=QtGui.QLabel(u"定值:")
20
        self.calButton=QtGui.QPushButton("计算")
21
        #self.playButton=QtGui.QPushButton("绘图")
22
 
23
 
24
        self.textL=QtGui.QLineEdit("201")
25
        self.QboxWays=QtGui.QComboBox()
26
        self.QboxWays.addItem(u"温度")
27
        self.QboxWays.addItem(u"能量")
28
        self.textW_s=QtGui.QLineEdit("1")
29
        self.textW_e=QtGui.QLineEdit("500")
30
        self.textW_ss=QtGui.QLineEdit("5")
31
        self.textD=QtGui.QLineEdit("0.0")
32
 
33
        self.gridlayout.addWidget( self.L , 0, 0)
34
        self.gridlayout.addWidget( self.textL , 0, 1)
35
        self.gridlayout.addWidget( self.Ways , 1, 0)
36
        self.gridlayout.addWidget( self.QboxWays , 1, 1)
37
        self.gridlayout.addWidget( self.W_s , 2, 0)
38
        self.gridlayout.addWidget( self.textW_s , 2, 1)
39
        self.gridlayout.addWidget( self.W_e , 3, 0)
40
        self.gridlayout.addWidget( self.textW_e, 3, 1)
41
        self.gridlayout.addWidget( self.W_ss , 4, 0)
42
        self.gridlayout.addWidget( self.textW_ss , 4, 1)
43
        self.gridlayout.addWidget( self.D , 5, 0)
44
        self.gridlayout.addWidget( self.textD , 5, 1)
45
        self.gridlayout.addWidget( self.calButton , 6, 1)
46
        #self.gridlayout.addWidget( self.playButton , 7, 1)
47
 
48
        self.connect( self.calButton, QtCore.SIGNAL( 'clicked()' ), self.cal )
49
        #self.connect( self.playButton, QtCore.SIGNAL( 'clicked()' ), self.play )
50
        self.setLayout(self.gridlayout)
51
 
52
    def cal(self):
53
        f=open("commond.dat","w")
54
        if self.QboxWays.currentText()=="能量":
55
            s=self.textL.text()+"\t"+"1\t"+self.textW_s.text()+"\t"+self.textW_e.text()+"\t"+self.textW_ss.text()+"\t"+self.textD.text()
56
            f.write(s)
57
        else:
58
            s=self.textL.text()+"\t0\t"+self.textW_s.text()+"\t"+self.textW_e.text()+"\t"+self.textW_ss.text()+"\t"+self.textD.text()
59
            f.write(s)
60
 
61
        os.system("M.exe")
62
 
63
    def play(self):
64
        return
65
 
66
 
67
app = QtGui.QApplication( sys.argv )
68
demo = Window()
69
demo.show()
70
app.exec_()

保存成Main.py文件后,可以利用cx_freeze打包成exe,打包好的程序就在dist目录下,别忘了把编译好的M.exe放进去。
 Bash | 
 
 copy code |
?

1
 cxfreeze Main.py --target-dir dist --base-name=win32gui

0

目前有 1 条留言    访客:1 条, 博主:0 条

  1. 玻璃钢电缆支架 2015年04月28日 下午2:38  @回复  Δ-49楼 回复

    写的很不错,很详细全面

给我留言

留言无头像?


×