求ptqt+python编写的计算器程序,支持键盘输入,急用,谢谢

求ptqt+python编写的计算器程序,支持键盘输入,急用,谢谢,第1张

#!/usr/bin/env python

#############################################################################

##

## Copyright (C) 2010 Riverbank Computing Limited.

## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).

## All rights reserved.

##

## This file is part of the examples of PyQt.

##

## $QT_BEGIN_LICENSE:BSD$

## You may use this file under the terms of the BSD license as follows:

##

## "Redistribution and use in source and binary forms, with or without

## modification, are permitted provided that the following conditions are

## met:

## * Redistributions of source code must retain the above copyright

## notice, this list of conditions and the following disclaimer.

## * Redistributions in binary form must reproduce the above copyright

## notice, this list of conditions and the following disclaimer in

## the documentation and/or other materials provided with the

## distribution.

## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor

## the names of its contributors may be used to endorse or promote

## products derived from this software without specific prior written

## permission.

##

## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICESLOSS OF USE,

## DATA, OR PROFITSOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."

## $QT_END_LICENSE$

##

#############################################################################

from PyQt4 import QtCore, QtGui

from ui_calculatorform import Ui_CalculatorForm

class CalculatorForm(QtGui.QWidget):

def __init__(self, parent=None):

super(CalculatorForm, self).__init__(parent)

self.ui = Ui_CalculatorForm()

self.ui.setupUi(self)

@QtCore.pyqtSlot(int)

def on_inputSpinBox1_valueChanged(self, value):

self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox2.value()))

@QtCore.pyqtSlot(int)

def on_inputSpinBox2_valueChanged(self, value):

self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox1.value()))

if __name__ == '__main__':

import sys

app = QtGui.QApplication(sys.argv)

calculator = CalculatorForm()

calculator.show()

sys.exit(app.exec_())

1、通过调用Linux C 函数

    system("calc.exe")

2、通过QProcess 阻塞调用

    QProcess::execute("calc.exe")/QProcess::startDetached("calc.exe")

3、通过QProcess,非阻塞调用

    QProcess *pro = new QProcess

    pro->start("calc.exe")

注释:

1、前两种方法会阻塞进程,直到计算器程序结束,而第三种方法则不会阻塞进程,可以多任务运行。

2、QT在运行的时候,要启动qws服务,如果用前两种方法,运行的时候,要新开启一个qws,否则不能运行;而第三种方法,则不需要在开启qws,他和主进程公用一个qws。

3、第三种虽然不会阻塞,但是有可能在终端上看不到打印出来的信息。所以要在终端显示信息,可以考虑阻塞模式。

如果只做四个简单的运算这应应该可以

shell脚本代码如下:

#!/bin/bash

read -p "input num1:" a

read -p "input num2:" b

read -p "input operator:" o

case $o in

+) let "res=a + b"

echo $res

-) let "res=a - b"

echo $res

/) awk 'BEGIN{printf "%.2f\n",'$a'/'$b'}'

*) let "res=a * b"

echo $res

esac


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11157487.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存