本篇博客主要介绍pyqt5的一些控件操作,大体列如下:

(1)获取QLineEdit的内容:expr = lineEdit.text()

(2)向QLineEdit、QTextEdit等写入内容:lineEdit.setText("string")

(3)检查checkbox 是否被勾选:checkBox.isChecked() ,返回布尔逻辑True or False

(4)设置控件是否使能lineEdit.setEnabled(True) 或者 linEdit.setEnabled(False) ,True 是使能控件,False 是失能控件

一、在qtdesigner 设计ui界面

注意ui里面各个控件的名称自己作相应修改,等下写代码的时候要对应上

二、编写代码

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

"""

使用pyqt5结合scipy求解积分

主要是练习一些控件的使用,如QLineEdit、QCheckBox等

未完善:实现数值积分

"""

import os

import sys

from PyQt5 import QtCore, QtGui, uic

from PyQt5.QtCore import QCoreApplication

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QMessageBox

from PyQt5.QtWidgets import QFileDialog, QAction, qApp

from PyQt5.QtGui import QIcon

import sympy as sp

from sympy import sin,cos,log,exp,tan,tanh,sinh,cosh

from sympy.abc import *

#os.chdir(r'D:\Files\python\gui\pyqt')

# 使用QtCreator建立的ui文件路径

qtCreatorFile = "./integrate_ui.ui"

# 使用uic加载

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

class MyApp(QMainWindow, Ui_MainWindow):

def __init__(self):

QMainWindow.__init__(self)

Ui_MainWindow.__init__(self)

super().__init__()

self.initUI() # 调用自定义的UI初始化函数initUI()

def initUI(self):

'''

Initialize the window's UI

'''

self.setupUi(self)

self.setWindow("简单音乐播放器")

self.setWindowIcon(QIcon("./leaf.png")) # 设置图标,linux下只有任务栏会显示图标

self.initMenuBar() # 初始化菜单栏

self.initToolBar() # 初始化工具栏

self.initButton() # 初始化按钮

self.checkboxInt.stateChanged.connect(self.changeStatus)

# 控制控件的使能和失能

self.checkboxInt.setEnabled(True)

self.lineeditFrom.setEnabled(False)

self.lineeditTo.setEnabled(False)

self.show() # 显示

def initMenuBar(self):

'''

初始化菜单栏

'''

self.actionExit.triggered.connect(qApp.quit) # 按下菜单栏的Exit按钮会退出程序

self.actionExit.setStatusTip("退出程序") # 左下角状态提示

self.actionExit.setShortcut('Ctrl+Q') # 添加快捷键

actionFileOpen = QAction('&Open', self)

actionFileOpen.setStatusTip('Open the File Explorer')

actionFileOpen.setShortcut('Ctrl+O')

actionFileOpen.triggered.connect(self.fileOpen_callback)

self.menuFile.addAction(actionFileOpen)

def fileopen_callback(self):

global fileName1 # 设置全局

pass

# fileName1, filetype = QFileDialog.getOpenFileName(self,

# "选取文件",

# "/home/kindy/音乐",

# "All Files (*);Music Files (*.mp3); Text Files (*.txt)") #设置文件扩展名过滤,注意用双分号间隔

# self.lineEdit.setText(fileName1)

def initToolBar(self):

'''

初始化工具栏

创建一个QAction实例exitAct,然后添加到designer已经创建的默认的工具栏toolBar里面

'''

self.toolBar = self.addToolBar('Exit')

exitAct = QAction(QIcon('./exit.png'), 'Exit', self)

exitAct.setShortcut('Ctrl+Q')

exitAct.triggered.connect(qApp.quit)

self.toolBar.addAction(exitAct)

def initButton(self):

'''

Initialize the Buttons

btnBrowse: browse the file explorer

btnPlay: begin to play music using module pygame

btnStop: stop playing music

'''

self.btnCaculate.clicked.connect(self.run)

def fileOpen_callback(self):

global fileName1 # 设置全局

fileName1, filetype = QFileDialog.getOpenFileName(self,

"选取文件",

"/home/kindy/音乐",

"All Files (*);;Music Files (*.mp3)") #设置文件扩展名过滤,注意用双分号间隔

self.lineEdit.setText(fileName1)

def closeEvent(self, event):

reply = QMessageBox.question(self, 'Message',

"Are you sure to quit?", QMessageBox.Yes |

QMessageBox.No, QMessageBox.No)

if reply == QMessageBox.Yes:

event.accept()

else:

event.ignore()

def run(self):

'''

首先查看是否勾选了定积分选项,如果是,调用sympy.integrate(expr,(var,a,b))

否则调用sympy.integrate(expr,var)注意var要是sympy.symbol类型的

未完善:使用数值积分计算积分结果

'''

if self.checkboxInt.isChecked(): # 如果勾选了定积分

expr = str(self.lineeditExpr.text()) # 获取表达式

var = str(self.lineeditVar.text()) # 获取积分变量

a = self.lineeditFrom.text() # 积分起始

b = self.lineeditTo.text() # 积分结束

result = sp.integrate(expr,(var,a,b)) # 使用sympy求解

self.texteditShow.setText('函数 ' + expr + '的定积分在区间 [{:},{:}] 的结果为: '.format(a,b) + str(result))

else:

expr = str(self.lineeditExpr.text())

var = str(self.lineeditVar.text())

var = sp.symbols(var)

result = sp.integrate(expr,var)

self.texteditShow.setText('函数 '+expr+' 的不定积分积分结果为:'+str(result))

def changeStatus(self, state):

if state == Qt.Checked: # 如果勾选了,使用含上下限的积分

self.lineeditFrom.setEnabled(True)

self.lineeditTo.setEnabled(True)

else: # 否则

self.lineeditFrom.setEnabled(False)

self.lineeditTo.setEnabled(False)

if __name__ == "__main__":

app = QApplication(sys.argv)

window = MyApp()

sys.exit(app.exec_())

代码有点长,以后有时间放到github里,目前就先放着,实现的效果如下:

小结:还是要多看Qt的帮助文档,python版本的pyqt没有专门的文档,官网链接过去的文档也是C++版本的,其实C++的文档是一样的,以勾选框的isChecked() 方法为例,帮助文档里面直接搜索QCheckBox没有查到什么,但是注意到其继承QAbstractButton,点击QAbstractButton,就可以在公有函数那里找到:

python做积分计算器_PyQt5练习:积分计算器相关推荐

  1. 如何用python做一个简单好用的计算器

    1 ui设计 使用qt designer ,按装anaconda后,在如下路径找到: conda3.05\Library\bin designer.exe文件,双击启动: 创建窗体,命名为XiaoDi ...

  2. 用python做计算器(低级版)

    用python做计算器(低级版) 今天突然找不到电脑上的计算器了,就自己做了一个计算器的程序. 首先,我们先定义一个input的函数 num1 = input ("Enter the fir ...

  3. python做数学计算器_从零开始学习PYTHON3讲义(二)把Python当做计算器

    <从零开始PYTHON3>第二讲 上一讲我们说过了如何启动Python IDLE集成开发学习环境,macOS/Linux都可以在命令行执行idle3.Windows则从开始菜单中去寻找ID ...

  4. python做的简单gui计算器_Python计算器–使用Tkinter创建一个简单的GUI计算器

    在Python计算器教程中,您将学习创建简单的GUI计算器.在这篇文章中,我将向您展示如何使用python中的tkinter模块开发一个简单的计算器.因此,让我们进一步创建一个简单的python计算器 ...

  5. python中Scipy模块求取积分

    python中Scipy模块求取积分的方法: SciPy下实现求函数的积分的函数的基本使用,积分,高等数学里有大量的讲述,基本意思就是求曲线下面积之和. 其中rn可认为是偏差,一般可以忽略不计,wi可 ...

  6. 笨办法学 Python · 续 练习 36:简单的计算器

    练习 36:简单的计算器 原文:Exercise 36: Simple Calculator 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 这个挑战是创建一个简单的代数计算器, ...

  7. python代码测试健康指数计算器_python编写的bmi体重指数计算器、出租车费用计算器、个税计算器、猜数字游戏...

    ''' 写四个函数 分别包含bmi体重指数计算器.出租车费用计算器.个税计算器.猜数字游戏 ''' #体重指数计算器 def bmi(): while 1: #声明变量 身高.体重 height=in ...

  8. python制作工资计算器-Python实现扣除个人税后的工资计算器示例

    本文实例讲述了Python实现扣除个人税后的工资计算器.分享给大家供大家参考,具体如下: 正好处于找工作期间避免不了会跟单位谈论薪资的情况,当然所有人跟你谈的都是税前收入,税后应该实际收入有多少呢?今 ...

  9. python计算每月工资-Python实现扣除个人税后的工资计算器示例

    本文实例讲述了Python实现扣除个人税后的工资计算器.分享给大家供大家参考,具体如下: 正好处于找工作期间避免不了会跟单位谈论薪资的情况,当然所有人跟你谈的都是税前收入,税后应该实际收入有多少呢?今 ...

  10. python计算工资编程-Python实现扣除个人税后的工资计算器示例

    本文实例讲述了Python实现扣除个人税后的工资计算器.分享给大家供大家参考,具体如下: 正好处于找工作期间避免不了会跟单位谈论薪资的情况,当然所有人跟你谈的都是税前收入,税后应该实际收入有多少呢?今 ...

最新文章

  1. shell中的函数及脚本调试方法
  2. C#对图片的几种简单处理 [ZT]
  3. 确保nginx安全的10个技巧
  4. Python中的元类(metaclass)
  5. pyinstaller打包python程序的常见问题
  6. Containerd迎来1.0通用版本
  7. Python机器学习:线型回归法06最好的衡量线型回归法的指标RSquared
  8. git中使用emacs和vimdiff/Ediff工具
  9. 七号信令的消息结构(包括SCCP详解)
  10. 什么是 ID Token
  11. C#保存excel文件时提示文件格式与扩展名不匹配
  12. 十大著名黑客——李纳斯-托瓦兹
  13. 炒币的诱惑、安稳的生活
  14. js 判断是否为 Android IOS IPAD IPHONE 等移动设备访问
  15. php generator 风雪,PHP 生成器Generator理解
  16. Spring Security + JWT实现权限管理
  17. Thinking-in-Java 读书笔记-11-持有对象
  18. GFC?一篇管饱(display:grid)
  19. 如何在MacOS上卸载IPGuard的软件--LAgent/LSDhelper程序
  20. [LOJ3086] [GXOI2019] 逼死强迫症

热门文章

  1. 传奇修改map地图教程_传奇gm如何增加或者修改服务器中的地图
  2. 《算法设计与分析》王红梅 第二版部分习题
  3. x230无线网卡驱动服务器版,联想X230网卡驱动
  4. 酷q服务器未响应,酷Q怎么了,停运后,其他机器框架,该怎么版
  5. java keytool下载_JavaJDK自带工具keytool生成ssl证书
  6. moodle安装过程中可能出现的问题
  7. 【Altera SoC体验之旅】+ 正式开启OpenCL模式
  8. Delphi可视化精讲视频教程-丁鹏-专题视频课程
  9. 各大组织大马默认密码
  10. java基础之API(String)