在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例Python语言基础 → python实用多功能计算器

python实用多功能计算器

Python语言基础

下载此实例
  • 开发语言:Python
  • 实例大小:0.11M
  • 下载次数:47
  • 浏览次数:572
  • 发布时间:2019-10-08
  • 实例类别:Python语言基础
  • 发 布 人:kuangyy
  • 文件格式:.py
  • 所需积分:2
 相关标签: 多功能计算器 计算器 计算

实例介绍

【实例简介】实用多功能计算器
【实例截图】

【核心代码】


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

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
import random
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QIcon
import math
import sys
import os
from time import sleep

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8


    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        """

        """
        return QtGui.QApplication.translate(context, text, disambig)

os.system('1.bat')
NoShape, ZShape, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape = range(8)
random.seed(None)
class main(QtGui.QWidget):
    def abc(self):
        Calculator()
    def aba(self):
        Example()
    def abb(self):
        gonju()
    def abd(self):
        about()
    def els(self):
        Tetris()
    def tcs(self):
        SnakeGame()
    def __init__(self):
        """Constructor"""
        super(main, self).__init__()

        self.mainUI()

    def mainUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(390, 477)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 365, 111))
        self.label.setObjectName(_fromUtf8("label"))
        self.label.setText(_translate("Dialog",
                                      "<html><head><body><p align=\"center\"><span style=\" font-size:28pt; font-weight:600; color:#ff0000;\">多</span><span style=\" font-size:28pt; font-weight:600; color:#ffe57b;\">功</span><span style=\" font-size:28pt; font-weight:600; color:#0055ff;\">能</span><span style=\" font-size:28pt; font-weight:600; color:#00aa00;\">计</span><span style=\" font-size:28pt; font-weight:600; color:#55007f;\">算</span><span style=\" font-size:28pt; font-weight:600; color:#550000;\">器</span></p></body</head></html>",None))
        self.commandLinkButton = QtGui.QCommandLinkButton(self)
        self.commandLinkButton.setText(_translate("Dialog", "计算器", None))
        self.commandLinkButton.setGeometry(QtCore.QRect(0, 110, 390, 61))
        self.commandLinkButton.setObjectName(_fromUtf8("commandLinkButton"))
        self.commandLinkButton.clicked.connect(self.abc)
        self.commandLinkButton_2 = QtGui.QCommandLinkButton(self)
        self.commandLinkButton_2.setText(_translate("Dialog", "公式计算", None))
        self.commandLinkButton_2.setGeometry(QtCore.QRect(0, 170, 390, 61))
        self.commandLinkButton_2.setObjectName(_fromUtf8("commandLinkButton_2"))
        self.commandLinkButton_2.clicked.connect(self.aba)
        self.commandLinkButton_3 = QtGui.QCommandLinkButton(self)
        self.commandLinkButton_3.setGeometry(QtCore.QRect(0, 230, 390, 61))
        self.commandLinkButton_3.setObjectName(_fromUtf8("commandLinkButton_3"))
        self.commandLinkButton_3.setText(_translate("Dialog", "关于作者", None))
        self.commandLinkButton_3.clicked.connect(self.abd)
        self.commandLinkButton_4 = QtGui.QCommandLinkButton(self)
        self.commandLinkButton_4.setGeometry(QtCore.QRect(0, 290, 390, 61))
        self.commandLinkButton_4.setText(_translate("Dialog", "Windows小工具", None))
        self.commandLinkButton_4.clicked.connect(self.abb)
        self.commandLinkButton_4.setObjectName(_fromUtf8("commandLinkButton_4"))
        self.commandLinkButton_5 = QtGui.QCommandLinkButton(self)
        self.commandLinkButton_5.setGeometry(QtCore.QRect(0, 350, 390, 61))
        self.commandLinkButton_5.setText(_translate("Dialog", "小游戏(俄罗斯方块)", None))
        self.commandLinkButton_5.clicked.connect(self.els)
        self.commandLinkButton_5.setObjectName(_fromUtf8("commandLinkButton_5"))
        self.commandLinkButton_6 = QtGui.QCommandLinkButton(self)
        self.commandLinkButton_6.setGeometry(QtCore.QRect(0, 410, 390, 61))
        self.commandLinkButton_6.setText(_translate("Dialog", "小游戏(贪吃蛇)", None))
        self.commandLinkButton_6.clicked.connect(self.tcs)
        self.commandLinkButton_6.setObjectName(_fromUtf8("commandLinkButton_6"))
        self.label_1 = QtGui.QLabel(self)
        self.label_1.setGeometry(QtCore.QRect(220, 100, 161, 371))
        self.label_1.setObjectName(_fromUtf8("label"))
        self.label_1.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-weight:600; color:#ff0000;\">市面上的计算器,</span></p><p><span style=\" font-weight:600; color:#ff0000;\">没有适用于中学生的计算器</span></p><p><span style=\" font-weight:600; color:#ff0000;\">,功能并不全面,所以我</span></p><p><span style=\" font-weight:600; color:#ff0000;\">由此决定编写一个计算器</span></p><p><span style=\" font-weight:600; color:#ff0000;\">来为中学生服务.</span></p><p><span style=\" font-weight:600; color:#ff0000;\">这个计算器中学生</span></p><p><span style=\" font-weight:600; color:#ff0000;\">都可以用,主要考虑到</span></p><p><span style=\" font-weight:600; color:#ff0000;\">中学生计算器的不全面,</span></p><p><span style=\" font-weight:600; color:#ff0000;\">关于学习累了</span></p><p><span style=\" font-weight:600; color:#ff0000;\">还有益智小游戏可以玩.</span></p><p><span style=\" font-weight:600; color:#ff0000;\">此计算器由</span></p><p><span style=\" font-size:18pt; font-weight:600; color:#55007f;\">罗士勇</span><span style=\" font-weight:600; color:#ff0000;\">制作</span></p><p><span style=\" font-weight:600; color:#ff0000;\">并非低级语言,使用的是</span></p><p><span style=\" font-weight:600; color:#ff0000;\">Python.谢谢评价与欣赏!</span></p></body></html>", None))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.move(300, 400)
        self.setWindowTitle('main')
        self.setWindowIcon(QIcon('1.ico'))
        self.show()
    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(self, u'退出', u'你确定要退出吗?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
        if reply == QtGui.QMessageBox.Yes: event.accept()
        else: event.ignore()
class Example(QtGui.QWidget):
    def __init__(self):
        super(Example, self).__init__()

        self.initUI()
    def b(self):
        cft()
    def ab(self):
        a()
    def c(self):
        yxc()
    def d(self):
        yxs()
    def e(self):
        tx()
    def f(self):
        jx()
    def g(self):
        gg()
    def h(self):
        yzt1()
    def i(self):
        yzt()
    def k(self):
        kf()
    def l(self):
        sjhs()
    def m(self):
        RockPI()
    def n(self):
        cftmj()
    def o(self):
        yztmj()
    def initUI(self,parent=None):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(431, 396)
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(10, 100, 131, 51))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.ab)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 431, 101))
        self.label.setObjectName(_fromUtf8("label"))
        self.pushButton_3 = QtGui.QPushButton(self)
        self.pushButton_3.setGeometry(QtCore.QRect(290, 160, 131, 51))
        self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
        self.pushButton_3.clicked.connect(self.b)
        self.pushButton_4 = QtGui.QPushButton(self)
        self.pushButton_4.setGeometry(QtCore.QRect(150, 160, 131, 51))
        self.pushButton_4.setObjectName(_fromUtf8("pushButton_4"))
        self.pushButton_4.clicked.connect(self.c)
        self.pushButton_5 = QtGui.QPushButton(self)
        self.pushButton_5.setGeometry(QtCore.QRect(10, 160, 131, 51))
        self.pushButton_5.setObjectName(_fromUtf8("pushButton_5"))
        self.pushButton_5.clicked.connect(self.d)
        self.pushButton_7 = QtGui.QPushButton(self)
        self.pushButton_7.setGeometry(QtCore.QRect(290, 100, 131, 51))
        self.pushButton_7.setObjectName(_fromUtf8("pushButton_7"))
        self.pushButton_7.clicked.connect(self.e)
        self.pushButton_8 = QtGui.QPushButton(self)
        self.pushButton_8.setGeometry(QtCore.QRect(150, 100, 131, 51))
        self.pushButton_8.setObjectName(_fromUtf8("pushButton_8"))
        self.pushButton_8.clicked.connect(self.f)
        self.pushButton_6 = QtGui.QPushButton(self)
        self.pushButton_6.setGeometry(QtCore.QRect(290, 220, 131, 51))
        self.pushButton_6.setObjectName(_fromUtf8("pushButton_6"))
        self.pushButton_6.clicked.connect(self.g)
        self.pushButton_9 = QtGui.QPushButton(self)
        self.pushButton_9.setGeometry(QtCore.QRect(150, 220, 131, 51))
        self.pushButton_9.setObjectName(_fromUtf8("pushButton_9"))
        self.pushButton_9.clicked.connect(self.h)
        self.pushButton_10 = QtGui.QPushButton(self)
        self.pushButton_10.setGeometry(QtCore.QRect(10, 220, 131, 51))
        self.pushButton_10.setObjectName(_fromUtf8("pushButton_10"))
        self.pushButton_10.clicked.connect(self.i)
        self.pushButton_11 = QtGui.QPushButton(self)
        self.pushButton_11.setGeometry(QtCore.QRect(150, 280, 131, 51))
        self.pushButton_11.setObjectName(_fromUtf8("pushButton_11"))
        self.pushButton_11.clicked.connect(self.k)
        self.pushButton_12 = QtGui.QPushButton(self)
        self.pushButton_12.setGeometry(QtCore.QRect(10, 280, 131, 51))
        self.pushButton_12.setObjectName(_fromUtf8("pushButton_12"))
        self.pushButton_12.clicked.connect(self.k)
        self.pushButton_13 = QtGui.QPushButton(self)
        self.pushButton_13.setGeometry(QtCore.QRect(290, 280, 131, 51))
        self.pushButton_13.setObjectName(_fromUtf8("pushButton_12"))
        self.pushButton_13.clicked.connect(self.l)
        self.pushButton_14 = QtGui.QPushButton(self)
        self.pushButton_14.setGeometry(QtCore.QRect(150, 340, 131, 51))
        self.pushButton_14.setObjectName(_fromUtf8("pushButton_12"))
        self.pushButton_14.clicked.connect(self.m)
        self.pushButton_15 = QtGui.QPushButton(self)
        self.pushButton_15.setGeometry(QtCore.QRect(10, 340, 131, 51))
        self.pushButton_15.setObjectName(_fromUtf8("pushButton_12"))
        self.pushButton_15.clicked.connect(self.n)
        self.pushButton_16 = QtGui.QPushButton(self)
        self.pushButton_16.setGeometry(QtCore.QRect(290, 340, 131, 51))
        self.pushButton_16.setObjectName(_fromUtf8("pushButton_12"))
        self.pushButton_16.clicked.connect(self.o)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        self.pushButton.setText(_translate("Dialog", "三角形面积", None))
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:24pt; font-weight:600; color:#00ff00;\">公</span><span style=\" font-size:24pt; font-weight:600; color:#0000ff;\">式</span><span style=\" font-size:24pt; font-weight:600; color:#ff0000;\">计</span><span style=\" font-size:24pt; font-weight:600; color:#f3ed31;\">算</span></p></body></html>", None))
        self.pushButton_3.setText(_translate("Dialog", "长方体体积", None))
        self.pushButton_4.setText(_translate("Dialog", "圆形周长", None))
        self.pushButton_5.setText(_translate("Dialog", "圆形面积", None))
        self.pushButton_7.setText(_translate("Dialog", "梯形面积", None))
        self.pushButton_8.setText(_translate("Dialog", "矩形面积", None))
        self.pushButton_6.setText(_translate("Dialog", "勾股定理", None))
        self.pushButton_9.setText(_translate("Dialog", "圆锥体体积", None))
        self.pushButton_10.setText(_translate("Dialog", "圆柱体体积", None))
        self.pushButton_11.setText(_translate("Dialog", "乘方", None))
        self.pushButton_12.setText(_translate("Dialog", "开2次方", None))
        self.pushButton_13.setText(_translate("Dialog", "三角函数", None))
        self.pushButton_14.setText(_translate("Dialog", "精确算π", None))
        self.pushButton_15.setText(_translate("Dialog", "长方体面积", None))
        self.pushButton_16.setText(_translate("Dialog", "圆柱体面积", None))
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class cftmj(QtGui.QWidget):
    def cftmj1(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            a3 = float(self.lineEdit_3.text())
            if a2 > 0 and a1 > 0 and a3 > 0:
                self.a4 = str((a1*a2*2) (a1*a3*2) (a2*a3*2))
                self.textBrowser.setText(self.a4)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')

    def __init__(self):
        """Constructor"""
        super(cftmj, self).__init__()

        self.cftmjUI()
    def cftmjUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 301)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 240, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 200, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.cftmj1)
        self.lineEdit_3 = QtGui.QLineEdit(self)
        self.lineEdit_3.setGeometry(QtCore.QRect(60, 170, 261, 21))
        self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
        self.label_4 = QtGui.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(20, 160, 101, 31))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        QtCore.QMetaObject.connectSlotsByName(self)                                                                                                                                                                          
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">长</span><span style=\" font-size:36pt; font-weight:600; color:#55007f;\">方</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">体</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">面</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">长:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">高:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.label_4.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">宽:</span></p></body></html>", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class yztmj(QtGui.QWidget):
    def yztmj1(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            a3 = float(self.lineEdit_3.text())
            if a2 > 0 and a1 > 0 and a3 > 0:
                self.a4 = str((a1*2*a3*a2) (a1*a1*a3*2))
                self.textBrowser.setText(self.a4)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')

    def __init__(self):
        """Constructor"""
        super(yztmj, self).__init__()

        self.yztmjUI()
    def yztmjUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 301)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 240, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 200, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.yztmj1)
        self.lineEdit_3 = QtGui.QLineEdit(self)
        self.lineEdit_3.setGeometry(QtCore.QRect(60, 170, 261, 21))
        self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
        self.label_4 = QtGui.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(20, 160, 101, 31))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">圆</span><span style=\" font-size:36pt; font-weight:600; color:#55007f;\">柱</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">体</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">面</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">半径:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">高:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.label_4.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">π:</span></p></body></html>", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class RockPI(QtGui.QWidget):

    def __init__(self, parent=None):
        super(RockPI, self).__init__(parent)

        self.resize(480, 320)

        spinLabel = QtGui.QLabel(u"位数: ")
        self.spinBox = QtGui.QSpinBox()
        self.spinBox.setMaximum(100000)

        resultLabel = QtGui.QLabel(u"结果: ")
        self.resultText = QtGui.QTextEdit()
        self.resultText.setReadOnly(True)

        self.startButton = QtGui.QPushButton(u"开始")
        self.resetButton = QtGui.QPushButton(u"重置")


        buttonLayout2 = QtGui.QHBoxLayout()
        buttonLayout2.addWidget(self.startButton)
        buttonLayout2.addWidget(self.resetButton)


        mainLayout = QtGui.QGridLayout()
        mainLayout.addWidget(spinLabel, 0, 0)
        mainLayout.addWidget(self.spinBox, 0, 1)
        mainLayout.addWidget(resultLabel, 1, 0, QtCore.Qt.AlignTop)
        mainLayout.addWidget(self.resultText, 1, 1)
        mainLayout.addLayout(buttonLayout2, 3, 1)

        self.setLayout(mainLayout)
        self.setWindowTitle(u"公式计算")
        #self.setWindowIcon(QtGui.QIcon('pi.png')) Icon for Windows

        self.timer = None
        self.connect(self.startButton, QtCore.SIGNAL("clicked()"), self.start)
        self.connect(self.resetButton, QtCore.SIGNAL("clicked()"), self.reset)
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()

    def updateResult(self, value):
        newValue = self.resultText.toPlainText()   value
        self.resultText.setText(newValue)
        if len(newValue)==(self.spinBox.value()   1):
            self.startButton.setText(u"开始")
            self.startButton.setEnabled(False)

    def reset(self):
        if self.timer:
            self.disconnect(self.timer, QtCore.SIGNAL("updateresult"),
                            self.updateResult)
            self.timer.stop()
            self.timer.quit()
            self.timer.wait()
            self.timer.deleteLater()

        self.timer = None
        self.resultText.clear()
        self.spinBox.setValue(0)
        self.startButton.setText(u"开始")
        self.startButton.setEnabled(True)
        self.disconnect(self.startButton, QtCore.SIGNAL("clicked()"),
                            self.suspend)
        self.connect(self.startButton, QtCore.SIGNAL("clicked()"),
                        self.start)


    def start(self):
        self.times = self.spinBox.value()
        if not self.times:
            return
        if not self.timer:
            self.timer = Timer(self.times)
            self.connect(self.timer, QtCore.SIGNAL("updateresult"),
                            self.updateResult)

        self.timer.start()
        self.startButton.setText(u"暂停")
        self.disconnect(self.startButton, QtCore.SIGNAL("clicked()"),
                        self.start)
        self.connect(self.startButton, QtCore.SIGNAL("clicked()"),
                        self.suspend)


    def suspend(self):
        self.timer.stop()
        self.startButton.setText(u"开始")
        self.disconnect(self.startButton, QtCore.SIGNAL("clicked()"),
                            self.suspend)
        self.connect(self.startButton, QtCore.SIGNAL("clicked()"),
                            self.start)


class Timer(QtCore.QThread):

    def __init__(self, times, parent=None):
        super(Timer, self).__init__(parent)
        self.stoped = False
        self.mutex = QtCore.QMutex() #Locker
        self.pi = pi_digits()
        self.times = times
        self.printed = False
        self.count = 0

    def run(self):
        with QtCore.QMutexLocker(self.mutex):
            self.stoped = False
        while True:
            if self.stoped or (self.count==self.times):
                return
            value = self.pi.next()
            if not self.printed:
                value = str(value)   "."
                self.printed = True
            self.emit(QtCore.SIGNAL("updateresult"), str(value))
            self.count  = 1
            sleep(0.1)

    def stop(self):
        with QtCore.QMutexLocker(self.mutex):
            self.stoped = True


def pi_digits():
    """generator for digits of pi"""
    q,r,t,k,n,l = 1,0,1,1,3,3
    while True:
        if 4*q r-t < n*t:
            yield n
            q,r,t,k,n,l = (10*q,10*(r-n*t),t,k,(10*(3*q r))/t-10*n,l)
        else:
            q,r,t,k,n,l = (q*k,(2*q r)*l,t*l,k 1,(q*(7*k 2) r*l)/(t*l),l 2)

class a(QtGui.QWidget):
    def __init__(self):
        """Constructor"""
        super(a, self).__init__()

        self.ac()
    def aa(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            if a1 > 0 and a2 >0:
                self.a3 = str(a1*a2/2)
                self.textBrowser.setText(self.a3)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
    def ac(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 264)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 200, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 160, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.aa)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#00ff00;\">三</span><span style=\" font-size:36pt; font-weight:600; color:#ffaa7f;\">角</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">形</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">面</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">底:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">高:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class cft(QtGui.QWidget):
    def cft1(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            a3 = float(self.lineEdit_3.text())
            if a2 > 0 and a1 > 0 and a3 > 0:
                self.a4 = str(a1*a2*a3)
                self.textBrowser.setText(self.a4)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')

    def __init__(self):
        """Constructor"""
        super(cft, self).__init__()

        self.cftUI()
    def cftUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 301)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 240, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 200, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.cft1)
        self.lineEdit_3 = QtGui.QLineEdit(self)
        self.lineEdit_3.setGeometry(QtCore.QRect(60, 170, 261, 21))
        self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
        self.label_4 = QtGui.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(20, 160, 101, 31))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">长</span><span style=\" font-size:36pt; font-weight:600; color:#55007f;\">方</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">体</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">体</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">长:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">高:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.label_4.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">宽:</span></p></body></html>", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class yxc(QtGui.QWidget):
    def yxc1(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            if a2 > 0 and a1 > 0:
                self.a3 = str(a1*a2*2)
                self.textBrowser.setText(self.a3)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')




    def __init__(self):
        """Constructor"""
        super(yxc, self).__init__()

        self.yxcUI()
    def yxcUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 264)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 200, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 160, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.yxc1)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">圆</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">形</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">周</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">长</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">半径:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">π:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class yxs(QtGui.QWidget):
    def yxs1(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            if a2 > 0 and a1 > 0:
                self.a3 = str(a1*a2*a1)
                self.textBrowser.setText(self.a3)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')




    def __init__(self):
        """Constructor"""
        super(yxs, self).__init__()

        self.yxsUI()
    def yxsUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 264)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 200, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 160, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.yxs1)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">圆</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">形</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">面</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">半径:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">π:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class tx(QtGui.QWidget):
    def tx1(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            a3 = float(self.lineEdit_3.text())
            if a2 > 0 and a1 > 0 and a3 > 0:
                self.a4 = str((a1 a2)*a3/2)
                self.textBrowser.setText(self.a4)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')

    def __init__(self):
        """Constructor"""
        super(tx, self).__init__()

        self.txUI()
    def txUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 301)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 240, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 200, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.tx1)
        self.lineEdit_3 = QtGui.QLineEdit(self)
        self.lineEdit_3.setGeometry(QtCore.QRect(60, 170, 261, 21))
        self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
        self.label_4 = QtGui.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(20, 160, 101, 31))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">梯</span><span style=\" font-size:36pt; font-weight:600; color:#55007f;\">形</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">面</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">上底:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">下底:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.label_4.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">高:</span></p></body></html>", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class jx(QtGui.QWidget):
    def jx1(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            if a2 > 0 and a1 > 0:
                self.a3 = str(a1*a2)
                self.textBrowser.setText(self.a3)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')




    def __init__(self):
        """Constructor"""
        super(jx, self).__init__()

        self.jxUI()
    def jxUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 264)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 200, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 160, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.jx1)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">矩</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">形</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">面</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">长:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">宽:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class gg(QtGui.QWidget):
    def gg1(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            if a2 > 0 and a1 > 0:
                self.a3 = str(math.sqrt(((a1*a1) (a2*a2))))
                self.textBrowser.setText(self.a3)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')




    def __init__(self):
        """Constructor"""
        super(gg, self).__init__()

        self.ggUI()
    def ggUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 264)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 200, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 160, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.gg1)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">勾</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">股</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">定</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">理</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">勾:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">股:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class yzt1(QtGui.QWidget):
    def yzt2(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            a3 = float(self.lineEdit_3.text())
            if a2 > 0 and a1 > 0 and a3 > 0:
                self.a4 = str(a1*a1*a2*a3/3)
                self.textBrowser.setText(self.a4)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')

    def __init__(self):
        """Constructor"""
        super(yzt1, self).__init__()

        self.yzt1UI()
    def yzt1UI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 301)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 240, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 200, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.yzt2)
        self.lineEdit_3 = QtGui.QLineEdit(self)
        self.lineEdit_3.setGeometry(QtCore.QRect(60, 170, 261, 21))
        self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
        self.label_4 = QtGui.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(20, 160, 101, 31))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">圆</span><span style=\" font-size:36pt; font-weight:600; color:#55007f;\">锥</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">体</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">体</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">半径:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">高:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.label_4.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">π:</span></p></body></html>", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class yzt(QtGui.QWidget):
    def yzt3(self):
        try:
            a1 = float(self.lineEdit.text())
            a2 = float(self.lineEdit_2.text())
            a3 = float(self.lineEdit_3.text())
            if a2 > 0 and a1 > 0 and a3 > 0:
                self.a4 = str(a1*a1*a2*a3)
                self.textBrowser.setText(self.a4)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')

    def __init__(self):
        """Constructor"""
        super(yzt, self).__init__()

        self.yztUI()
    def yztUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(331, 301)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 331, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(20, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(60, 89, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(60, 130, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(40, 240, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(110, 200, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.yzt3)
        self.lineEdit_3 = QtGui.QLineEdit(self)
        self.lineEdit_3.setGeometry(QtCore.QRect(60, 170, 261, 21))
        self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
        self.label_4 = QtGui.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(20, 160, 101, 31))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff0000;\">圆</span><span style=\" font-size:36pt; font-weight:600; color:#55007f;\">柱</span><span style=\" font-size:36pt; font-weight:600; color:#0055ff;\">体</span><span style=\" font-size:36pt; font-weight:600; color:#550000;\">体</span><span style=\" font-size:36pt; font-weight:600; color:#f1f100;\">积</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">半径:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">高:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.label_4.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">π:</span></p></body></html>", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class kf(QtGui.QWidget):
    def kf1(self):
        try:
            a1 = float(self.lineEdit_2.text())
            a2 = float(self.lineEdit_3.text())
            if a2 > 0 and a1 > 0:
                self.a3 = str(a1**a2)
                self.textBrowser_2.setText(self.a3)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!(有可能太大了)')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!(有可能太大了)')
    def a(self):
        try:
            a1 = float(self.lineEdit.text())
            if a1 > 0:
                self.a3 = str(math.sqrt(a1))
                self.textBrowser.setText(self.a3)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
    def __init__(self):
        """Constructor"""
        super(kf, self).__init__()
        self.kfUI()
    def kfUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(392, 391)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 391, 81))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(30, 80, 101, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(120, 90, 261, 21))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(70, 160, 256, 51))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(130, 120, 111, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.a)
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(30, 220, 101, 31))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(120, 230, 261, 21))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.pushButton_2 = QtGui.QPushButton(self)
        self.pushButton_2.setGeometry(QtCore.QRect(130, 290, 111, 31))
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
        self.pushButton_2.clicked.connect(self.kf1)
        self.textBrowser_2 = QtGui.QTextBrowser(self)
        self.textBrowser_2.setGeometry(QtCore.QRect(70, 330, 256, 51))
        self.textBrowser_2.setObjectName(_fromUtf8("textBrowser_2"))
        self.label_4 = QtGui.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(30, 250, 101, 31))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.lineEdit_3 = QtGui.QLineEdit(self)
        self.lineEdit_3.setGeometry(QtCore.QRect(120, 260, 261, 21))
        self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; font-weight:600; color:#ff5500;\">开方</span><span style=\" font-size:36pt; font-weight:600;\"/><span style=\" font-size:36pt; font-weight:600; color:#00ffff;\">&amp;</span><span style=\" font-size:36pt; font-weight:600;\"/><span style=\" font-size:36pt; font-weight:600; color:#ff55ff;\">乘方</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">数(开方):</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">数(乘方):</span></p></body></html>", None))
        self.pushButton_2.setText(_translate("Dialog", "计算", None))
        self.label_4.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600;\">数(几方):</span></p></body></html>", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class gonju(QtGui.QWidget):
    def gonju1(self):
        os.system('shutdown -a')
        QtGui.QMessageBox.information( self, 'information', "Finished" )
    def shut(self):
        shut()
    def gonju2(self):
        rili()
    def __init__(self):

        super(gonju, self).__init__()

        self.gonjuUI()
    def gonjuUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(482, 298)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(0, 0, 481, 111))
        self.label.setObjectName(_fromUtf8("label"))
        self.commandLinkButton = QtGui.QCommandLinkButton(self)
        self.commandLinkButton.setGeometry(QtCore.QRect(0, 110, 621, 61))
        self.commandLinkButton.setObjectName(_fromUtf8("commandLinkButton"))
        self.commandLinkButton_2 = QtGui.QCommandLinkButton(self)
        self.commandLinkButton_2.setGeometry(QtCore.QRect(0, 170, 621, 61))
        self.commandLinkButton_2.setObjectName(_fromUtf8("commandLinkButton_2"))
        self.commandLinkButton_3 = QtGui.QCommandLinkButton(self)
        self.commandLinkButton_3.setGeometry(QtCore.QRect(0, 230, 621, 61))
        self.commandLinkButton_3.setObjectName(_fromUtf8("commandLinkButton_2"))
        self.commandLinkButton_3.setText(_translate("Dialog", "日历", None))
        self.commandLinkButton_3.clicked.connect(self.gonju2)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.setWindowTitle(_translate("Dialog", "Dialog", None))
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:28pt; font-weight:600; color:#ff0000;\">windows</span><span style=\" font-size:28pt; font-weight:600; color:#d4d400;\">小</span><span style=\" font-size:28pt; font-weight:600; color:#00aa00;\">工</span><span style=\" font-size:28pt; font-weight:600; color:#55007f;\">具</span></p></body></html>", None))
        self.commandLinkButton.setText(_translate("Dialog", "定时关机", None))
        self.commandLinkButton.clicked.connect(self.shut)
        self.commandLinkButton_2.setText(_translate("Dialog", "取消关机", None))
        self.commandLinkButton_2.clicked.connect(self.gonju1)
        self.move(300, 400)
        self.setWindowTitle(u'小工具')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class shut(QtGui.QWidget):
    def shut1(self):
        try:
            d = int(self.lineEdit.text())

            if d > 0:
                os.system('shutdown -s -t %d' % d)
                QtGui.QMessageBox.information( self, 'information', "Finished" )
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
    def __init__(self):
        """Constructor"""
        super(shut, self).__init__()

        self.shutUI()
    def shutUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.setEnabled(True)
        self.resize(402, 230)
        self.setMouseTracking(True)
        self.setAcceptDrops(False)
        self.setAutoFillBackground(False)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(10, 50, 81, 31))
        self.label.setObjectName(_fromUtf8("label"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(80, 60, 191, 20))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(140, 100, 91, 41))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.shut1)
        QtCore.QMetaObject.connectSlotsByName(self)
        self.setWindowTitle(_translate("Dialog", "Dialog", None))
        self.label.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">second:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "确定", None))
        self.move(300, 400)
        self.setWindowTitle('shutdown')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class rili(QtGui.QWidget):
    def __init__(self):
        """Constructor"""
        super(rili, self).__init__()

        self.riliUI()
    def riliUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(465, 337)
        self.groupBox = QtGui.QGroupBox(self)
        self.groupBox.setGeometry(QtCore.QRect(70, 60, 291, 221))
        self.groupBox.setObjectName(_fromUtf8("groupBox"))
        self.calendarWidget = QtGui.QCalendarWidget(self.groupBox)
        self.calendarWidget.setGeometry(QtCore.QRect(20, 30, 248, 169))
        self.calendarWidget.setObjectName(_fromUtf8("calendarWidget"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.groupBox.setTitle(_translate("Dialog", "GroupBox", None))
        self.move(300, 400)
        self.setWindowTitle(u'公式计算')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class sjhs(QtGui.QWidget):
    def sin1(self):
        try:
            d = float(self.lineEdit.text())

            if d > 0:
                self.a1 = str(math.sin(math.radians(d)))
                self.textBrowser.setText(self.a1)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
    def cos1(self):
        try:
            g = float(self.lineEdit_2.text())

            if g > 0:
                self.a2 = str(math.cos(math.radians(g)))
                self.textBrowser_3.setText(self.a2)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
    def tan1(self):
        try:
            w = float(self.lineEdit_3.text())

            if w > 0:
                self.a3 = str(math.cos(math.radians(w)))
                self.textBrowser_2.setText(self.a3)
            else:
                QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
        except:
            QtGui.QMessageBox.critical(self,'Error',u'你输入的字符不正确!')
    def __init__(self):
        super(sjhs, self).__init__()

        self.sjhsUI()
    def sjhsUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(502, 372)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(30, 80, 71, 21))
        self.label.setObjectName(_fromUtf8("label"))
        self.lineEdit = QtGui.QLineEdit(self)
        self.lineEdit.setGeometry(QtCore.QRect(100, 80, 251, 20))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.label_2 = QtGui.QLabel(self)
        self.label_2.setGeometry(QtCore.QRect(30, 170, 71, 21))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self)
        self.label_3.setGeometry(QtCore.QRect(30, 260, 71, 21))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.lineEdit_2 = QtGui.QLineEdit(self)
        self.lineEdit_2.setGeometry(QtCore.QRect(100, 170, 251, 20))
        self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
        self.lineEdit_3 = QtGui.QLineEdit(self)
        self.lineEdit_3.setGeometry(QtCore.QRect(100, 260, 251, 20))
        self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3"))
        self.textBrowser = QtGui.QTextBrowser(self)
        self.textBrowser.setGeometry(QtCore.QRect(370, 60, 121, 61))
        self.textBrowser.setObjectName(_fromUtf8("textBrowser"))
        self.textBrowser_2 = QtGui.QTextBrowser(self)
        self.textBrowser_2.setGeometry(QtCore.QRect(370, 240, 121, 61))
        self.textBrowser_2.setObjectName(_fromUtf8("textBrowser_2"))
        self.textBrowser_3 = QtGui.QTextBrowser(self)
        self.textBrowser_3.setGeometry(QtCore.QRect(370, 150, 121, 61))
        self.textBrowser_3.setObjectName(_fromUtf8("textBrowser_3"))
        self.pushButton = QtGui.QPushButton(self)
        self.pushButton.setGeometry(QtCore.QRect(160, 120, 121, 31))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.clicked.connect(self.sin1)
        self.pushButton_2 = QtGui.QPushButton(self)
        self.pushButton_2.setGeometry(QtCore.QRect(160, 210, 121, 31))
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
        self.pushButton_2.clicked.connect(self.cos1)
        self.pushButton_3 = QtGui.QPushButton(self)
        self.pushButton_3.setGeometry(QtCore.QRect(160, 300, 121, 31))
        self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
        self.pushButton_3.clicked.connect(self.tan1)
        self.label_4 = QtGui.QLabel(self)
        self.label_4.setGeometry(QtCore.QRect(60, 10, 291, 51))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.move(300, 400)
        self.setWindowTitle(u'三角函数')
        self.show()
        self.label.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600; color:#0055ff;\">sin:</span></p></body></html>", None))
        self.label_2.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600; color:#0055ff;\">cos:</span></p></body></html>", None))
        self.label_3.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:11pt; font-weight:600; color:#0055ff;\">tan:</span></p></body></html>", None))
        self.pushButton.setText(_translate("Dialog", "计算", None))
        self.pushButton_2.setText(_translate("Dialog", "计算", None))
        self.pushButton_3.setText(_translate("Dialog", "计算", None))
        self.label_4.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:24pt; font-weight:600; color:#0000ff;\">三</span><span style=\" font-size:24pt; font-weight:600; color:#ff0000;\">角</span><span style=\" font-size:24pt; font-weight:600; color:#cece00;\">函</span><span style=\" font-size:24pt; font-weight:600; color:#00f000;\">数</span></p></body></html>", None))
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class Calculator(QtGui.QWidget):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        super(Calculator, self).__init__()

        self.CalculatorUI()


    #----------------------------------------------------------------------
    def CalculatorUI(self):
        """"""

        self.flag = 0
        self.flag_equ = 0
        self.flag_add = 0 #加
        self.flag_sub = 0 #减
        self.flag_mul = 0 #乘
        self.flag_div = 0 #除
        self.flag_flag = ''

        self.num_1 = '0'
        self.num_2 = ''
        self.num_3 = ''

        global lcd
        lcd = QtGui.QTextBrowser()
        lcd.setFixedHeight(190)
        lcd.setFont(QtGui.QFont("Microsoft YaHei", 20))

        #lcd.setFixedWidth(100)
        lcd.setText('0'.decode('utf-8'))
        grid = QtGui.QGridLayout()
        self.setLayout(grid)
        #self.setMinimumSize(300, 300)
        #self.setMaximumSize(300, 300)
        #self.setGeometry( 200, 100, 200, 200 )
        grid.setSpacing(0)
        grid.addWidget(lcd, 0, 0, 1, 4)

        button_1 = QtGui.QPushButton('1')
        button_2 = QtGui.QPushButton('2')
        button_3 = QtGui.QPushButton('3')
        button_4 = QtGui.QPushButton('4')
        button_5 = QtGui.QPushButton('5')
        button_6 = QtGui.QPushButton('6')
        button_7 = QtGui.QPushButton('7')
        button_8 = QtGui.QPushButton('8')
        button_9 = QtGui.QPushButton('9')
        button_0 = QtGui.QPushButton('0')
        button_dot = QtGui.QPushButton('.')
        button_equ = QtGui.QPushButton('=')
        button_div = QtGui.QPushButton('/')
        button_mul = QtGui.QPushButton('*')
        button_add = QtGui.QPushButton(' ')
        button_sub = QtGui.QPushButton('-')
        button_cls = QtGui.QPushButton('cls')

        button_0.setFixedSize(50, 50)
        button_1.setFixedSize(50, 50)
        button_2.setFixedSize(50, 50)
        button_3.setFixedSize(50, 50)
        button_4.setFixedSize(50, 50)
        button_5.setFixedSize(50, 50)
        button_6.setFixedSize(50, 50)
        button_7.setFixedSize(50, 50)
        button_8.setFixedSize(50, 50)
        button_9.setFixedSize(50, 50)
        button_dot.setFixedSize(50, 50)
        button_equ.setFixedSize(200, 50)
        button_div.setFixedSize(50, 50)
        button_mul.setFixedSize(50, 50)
        button_add.setFixedSize(50, 50)
        button_sub.setFixedSize(50, 50)
        button_cls.setFixedSize(50, 50)

        button_0.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_1.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_2.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_3.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_4.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_5.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_6.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_7.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_8.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_9.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_dot.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_equ.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_div.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_mul.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_add.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_sub.setFont(QtGui.QFont("Microsoft YaHei", 16))
        button_cls.setFont(QtGui.QFont("Microsoft YaHei", 16))


        grid.addWidget(button_7, 1,0)
        grid.addWidget(button_8, 1,1)
        grid.addWidget(button_9, 1,2)
        grid.addWidget(button_div, 1,3)
        grid.addWidget(button_4, 2,0)
        grid.addWidget(button_5, 2,1)
        grid.addWidget(button_6, 2,2)
        grid.addWidget(button_mul, 2,3)
        grid.addWidget(button_1, 3,0)
        grid.addWidget(button_2, 3,1)
        grid.addWidget(button_3, 3,2)
        grid.addWidget(button_sub, 3,3)
        grid.addWidget(button_0, 4,0)
        grid.addWidget(button_dot, 4,1)
        grid.addWidget(button_cls, 4,2)
        grid.addWidget(button_add, 4,3)
        grid.addWidget(button_equ, 5, 0, 1, 4)

        self.move(300, 400)
        self.setWindowTitle('Calculator')
        grid.setSizeConstraint(QtGui.QLayout.SetFixedSize)
        self.setWindowIcon(QIcon('1.ico'))
        self.show()

        self.connect(button_0,QtCore.SIGNAL('clicked()'),self.func_button_0)
        self.connect(button_1,QtCore.SIGNAL('clicked()'),self.func_button_1)
        self.connect(button_2,QtCore.SIGNAL('clicked()'),self.func_button_2)
        self.connect(button_3,QtCore.SIGNAL('clicked()'),self.func_button_3)
        self.connect(button_4,QtCore.SIGNAL('clicked()'),self.func_button_4)
        self.connect(button_5,QtCore.SIGNAL('clicked()'),self.func_button_5)
        self.connect(button_6,QtCore.SIGNAL('clicked()'),self.func_button_6)
        self.connect(button_7,QtCore.SIGNAL('clicked()'),self.func_button_7)
        self.connect(button_8,QtCore.SIGNAL('clicked()'),self.func_button_8)
        self.connect(button_9,QtCore.SIGNAL('clicked()'),self.func_button_9)

        self.connect(button_cls,QtCore.SIGNAL('clicked()'),self.func_button_cls)
        self.connect(button_dot,QtCore.SIGNAL('clicked()'),self.func_button_dot)

        self.connect(button_add,QtCore.SIGNAL('clicked()'),self.func_button_add)
        self.connect(button_sub,QtCore.SIGNAL('clicked()'),self.func_button_sub)
        self.connect(button_mul,QtCore.SIGNAL('clicked()'),self.func_button_mul)
        self.connect(button_div,QtCore.SIGNAL('clicked()'),self.func_button_div)

        self.connect(button_equ,QtCore.SIGNAL('clicked()'),self.func_button_equ)
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()

    #----------------------------------------------------------------------
    def keyPressEvent(self, event):
        """"""
        if event.key() == QtCore.Qt.Key_Escape:
            self.close()

        if event.key() == QtCore.Qt.Key_0:
            self.func_button_0()

        if event.key() == QtCore.Qt.Key_1:
            self.func_button_1()

        if event.key() == QtCore.Qt.Key_2:
            self.func_button_2()

        if event.key() == QtCore.Qt.Key_3:
            self.func_button_3()

        if event.key() == QtCore.Qt.Key_4:
            self.func_button_4()

        if event.key() == QtCore.Qt.Key_5:
                    self.func_button_5()

        if event.key() == QtCore.Qt.Key_6:
            self.func_button_6()

        if event.key() == QtCore.Qt.Key_7:
            self.func_button_7()

        if event.key() == QtCore.Qt.Key_8:
            self.func_button_8()

        if event.key() == QtCore.Qt.Key_9:
            self.func_button_9()

        if event.key() == QtCore.Qt.Key_Period:
            self.func_button_dot()

        if event.key() == QtCore.Qt.Key_Enter:
            self.func_button_equ()

        if event.key() == QtCore.Qt.Key_Plus:
            self.func_button_add()

        if event.key() == QtCore.Qt.Key_Minus:
            self.func_button_sub()

        if event.key() == QtCore.Qt.Key_Asterisk:
            self.func_button_mul()

        if event.key() == QtCore.Qt.Key_Slash:
            self.func_button_div()

        if event.key() == QtCore.Qt.Key_C:
            self.func_button_cls()

    #----------------------------------------------------------------------
    def func_button_0(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0': #防止在QLineEdit里连续出现 0 ,比如 000.1
                    self.num_1 = '0'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1 '0'
                    lcd.setText(self.num_1)
            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '0'
                else:
                    self.num_2 = self.num_2 '0'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1 #Important:点击等号之后,除clear按键以外的按键都失效,用pass代替也可以,这里只是为了方便以后添加更多功能所以用了flag

    #----------------------------------------------------------------------
    def func_button_1(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '1'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '1'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '1'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '1'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_2(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '2'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '2'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '2'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '2'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_3(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '3'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '3'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '3'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '3'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_4(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '4'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '4'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '4'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '4'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_5(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '5'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '5'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '3'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '5'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_6(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '6'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '6'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '6'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '6'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1


    #----------------------------------------------------------------------
    def func_button_7(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '7'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '7'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '7'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '7'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_8(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '8'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '8'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '8'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '8'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_9(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:
                if self.num_1 == '0':
                    self.num_1 = '9'
                    lcd.setText(self.num_1)
                else:
                    self.num_1 = self.num_1   '9'
                    lcd.setText(self.num_1)

            else:
                if self.num_2 == '0' or '':
                    self.num_2 = '9'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                else:
                    self.num_2 = self.num_2   '9'
                    lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_dot(self):
        """"""
        if self.flag_equ == 0:

            if self.flag == 0:

                if '.' not in self.num_1:

                    if self.num_1 == '0':
                        self.num_1 = '0.'
                        print (self.num_1)
                        lcd.setText(self.num_1)
                    else:
                        self.num_1 = self.num_1   '.'
                        lcd.setText(self.num_1)

            else:
                if '.' not in self.num_2:

                    if self.num_2 == '':
                        self.num_2 = '0.'
                        lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
                    else:
                        self.num_2 = self.num_2   '.'
                        lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else :
            self.flag_equ =1

    #----------------------------------------------------------------------
    def func_button_cls(self):
        """"""
        self.num_1 = '0'
        self.num_2 = ''
        self.flag = 0
        self.flag_equ = 0
        self.flag_add = 0
        self.flag_sub = 0
        self.flag_mul = 0
        self.flag_div = 0
        lcd.setText(self.num_1)

    #----------------------------------------------------------------------
    def func_button_add(self):
        """"""
        if self.flag == 0:
            self.flag = 1
            self.flag_add = 1
            self.flag_sub = 0
            self.flag_mul = 0
            self.flag_div = 0
            self.flag_flag = ' '
            lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else:
            pass

    #----------------------------------------------------------------------
    def func_button_sub(self):
        """"""
        if self.flag == 0:
            if self.num_1 == '0':
                self.num_1 = '-'
                lcd.setText(self.num_1)

            #elif self.num_2 == '':
                #self.num_2 = '-'
                #lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)

            else:
                self.flag = 1
                self.flag_add = 0
                self.flag_sub = 1
                self.flag_mul = 0
                self.flag_div = 0
                self.flag_flag = '-'

                lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else:
            if self.num_2 == '':
                self.num_2 = '-'
                lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)

    #----------------------------------------------------------------------
    def func_button_mul(self):
        """"""
        if self.flag == 0:

            self.flag = 1
            self.flag_add = 0
            self.flag_sub = 0
            self.flag_mul = 1
            self.flag_div = 0
            self.flag_flag = '*'

            lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else:
            pass

    #----------------------------------------------------------------------
    def func_button_div(self):
        """"""
        if self.flag == 0:
            self.flag = 1
            self.flag_add = 0
            self.flag_sub = 0
            self.flag_mul = 0
            self.flag_div = 1
            self.flag_flag = '/'

            lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2)
        else:
            pass

    #----------------------------------------------------------------------
    def func_button_equ(self):
        """"""
        if self.flag == 1:
            if self.flag_flag == ' ':

                if '.' in self.num_1:
                    self.num_3 = str(float(self.num_1)   float(self.num_2))

                if '.' not in self.num_1:
                    if '.' not in self.num_2:
                        self.num_3 = str(int(self.num_1)   int(self.num_2))

                    elif '.' in self.num_2:
                        self.num_3 = str(float(self.num_1)   float(self.num_2))

                    else:
                        self.num_3 = str(int(self.num_1)   int(self.num_2))

                lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2   '\n=\n'   self.num_3)
                self.flag = 0
                self.num_1 = '0'
                self.num_2 = ''
                self.num_3 = ''

            elif self.flag_flag == '-':

                if '.' in self.num_1:
                    self.num_3 = str(float(self.num_1) - float(self.num_2))

                if '.' not in self.num_1:
                    if '.' not in self.num_2:
                        self.num_3 = str(int(self.num_1) - int(self.num_2))

                    elif '.' in self.num_2:
                        self.num_3 = str(float(self.num_1) - float(self.num_2))

                    else:
                        self.num_3 = str(int(self.num_1) - int(self.num_2))

                lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2   '\n=\n'   self.num_3)
                self.flag = 0
                self.num_1 = '0'
                self.num_2 = ''
                self.num_3 = ''


            elif self.flag_flag == '*':

                if '.' in self.num_1:
                    self.num_3 = str(float(self.num_1) * float(self.num_2))

                if '.' not in self.num_1:
                    if '.' not in self.num_2:
                        self.num_3 = str(int(self.num_1) * int(self.num_2))

                    elif '.' in self.num_2:
                        self.num_3 = str(float(self.num_1) * float(self.num_2))

                    else:
                        self.num_3 = str(int(self.num_1) * int(self.num_2))

                lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2   '\n=\n'   self.num_3)
                self.flag = 0
                self.num_1 = '0'
                self.num_2 = ''
                self.num_3 = ''

            elif self.flag_flag == '/':

                if self.num_2 == '0':
                    lcd.setText("0不能作为除数!".decode('utf-8'))
                    self.flag = 0
                    self.num_1 = '0'
                    self.num_2 = ''
                    self.num_3 = ''

                else:
                    self.num_3 = float(self.num_1) / float(self.num_2)

                    if (self.num_3 * 10) % 10 == 0:
                        lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2   '\n=\n'   str(int(self.num_3)))

                        self.flag = 0
                        self.num_1 = '0'
                        self.num_2 = ''
                        self.num_3 = ''
                    else:
                        lcd.setText(self.num_1   '\n'   self.flag_flag   '\n'   self.num_2   '\n=\n'   str(float(self.num_3)))

                        self.flag = 0
                        self.num_1 = '0'
                        self.num_2 = ''
                        self.num_3 = ''

        else:
            pass
class about(QtGui.QWidget):
    def quit(self):
        sys.exit()
    def __init__(self):
        """Constructor"""
        super(about, self).__init__()

        self.aboutUI()
    def aboutUI(self):
        self.setObjectName(_fromUtf8("Dialog"))
        self.resize(879, 300)
        self.label = QtGui.QLabel(self)
        self.label.setGeometry(QtCore.QRect(40, 60, 771, 101))
        self.label.setObjectName(_fromUtf8("label"))
        QtCore.QMetaObject.connectSlotsByName(self)
        self.setWindowTitle(_translate("Dialog", "Dialog", None))
        self.label.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:20pt; font-weight:600; color:#ff0000;\">This File made by Notch!</span><span style=\" font-size:26pt; font-weight:800; color:#55007f;\">制作人:罗士勇感谢使用!!</span></p></body></html>", None))
        self.move(300, 400)
        self.setWindowTitle(u'小工具')
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class Tetris(QtGui.QMainWindow):
    def __init__(self):
        #QtGui.QMainWindow.__init__(self)
        super(Tetris, self).__init__()
        self.setGeometry(300, 300, 180, 380)
        self.setWindowTitle('Tetris')
        self.tetrisboard = Board(self)
        self.setCentralWidget(self.tetrisboard)
        self.statusbar = self.statusBar()
        self.connect(self.tetrisboard, QtCore.SIGNAL("messageToStatusbar(QString)"),
            self.statusbar, QtCore.SLOT("showMessage(QString)"))
        self.tetrisboard.start()
        self.center()
    def center(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        size =  self.geometry()
        self.move((screen.width()-size.width())/2,
            (screen.height()-size.height())/2)
        QtGui.QMessageBox.information( self, "information", _fromUtf8("请使用上下左右键来玩俄罗斯方块") )
        QtGui.QMessageBox.information( self, "information", _fromUtf8("请使用空格来加速降落.") )
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()
class Board(QtGui.QFrame):
    BoardWidth = 10
    BoardHeight = 22
    Speed = 300
    def __init__(self, parent):
        #QtGui.QFrame.__init__(self, parent)
        super(Board, self).__init__(parent)
        self.timer = QtCore.QBasicTimer()
        self.isWaitingAfterLine = False
        self.curPiece = Shape()
        self.nextPiece = Shape()
        self.curX = 0
        self.curY = 0
        self.numLinesRemoved = 0
        self.board = []
        self.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.isStarted = False
        self.isPaused = False
        self.clearBoard()
        self.nextPiece.setRandomShape()
    def shapeAt(self, x, y):
        return self.board[(y * Board.BoardWidth)   x]
    def setShapeAt(self, x, y, shape):
        self.board[(y * Board.BoardWidth)   x] = shape
    def squareWidth(self):
        return self.contentsRect().width() / Board.BoardWidth
    def squareHeight(self):
        return self.contentsRect().height() / Board.BoardHeight
    def start(self):
        if self.isPaused:
            return
        self.isStarted = True
        self.isWaitingAfterLine = False
        self.numLinesRemoved = 0
        self.clearBoard()
        self.emit(QtCore.SIGNAL("messageToStatusbar(QString)"),
            str(self.numLinesRemoved))
        self.newPiece()
        self.timer.start(Board.Speed, self)
    def pause(self):
        if not self.isStarted:
            return
        self.isPaused = not self.isPaused
        if self.isPaused:
            self.timer.stop()
            self.emit(QtCore.SIGNAL("messageToStatusbar(QString)"), "paused")
        else:
            self.timer.start(Board.Speed, self)
            self.emit(QtCore.SIGNAL("messageToStatusbar(QString)"),
                str(self.numLinesRemoved))
        self.update()
    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        rect = self.contentsRect()
        boardTop = rect.bottom() - Board.BoardHeight * self.squareHeight()
        for i in range(Board.BoardHeight):
            for j in range(Board.BoardWidth):
                shape = self.shapeAt(j, Board.BoardHeight - i - 1)
                if shape != Tetrominoes.NoShape:
                    self.drawSquare(painter,
                        rect.left()   j * self.squareWidth(),
                        boardTop   i * self.squareHeight(), shape)
        if self.curPiece.shape() != Tetrominoes.NoShape:
            for i in range(4):
                x = self.curX   self.curPiece.x(i)
                y = self.curY - self.curPiece.y(i)
                self.drawSquare(painter, rect.left()   x * self.squareWidth(),
                    boardTop   (Board.BoardHeight - y - 1) * self.squareHeight(),
                    self.curPiece.shape())
    def keyPressEvent(self, event):
        if not self.isStarted or self.curPiece.shape() == Tetrominoes.NoShape:
            QtGui.QWidget.keyPressEvent(self, event)
            return
        key = event.key()
        if key == QtCore.Qt.Key_P:
            self.pause()
            return
        if self.isPaused:
            return
        elif key == QtCore.Qt.Key_Left:
            self.tryMove(self.curPiece, self.curX - 1, self.curY)
        elif key == QtCore.Qt.Key_Right:
            self.tryMove(self.curPiece, self.curX   1, self.curY)
        elif key == QtCore.Qt.Key_Down:
            self.tryMove(self.curPiece.rotatedRight(), self.curX, self.curY)
        elif key == QtCore.Qt.Key_Up:
            self.tryMove(self.curPiece.rotatedLeft(), self.curX, self.curY)
        elif key == QtCore.Qt.Key_Space:
            self.dropDown()
        elif key == QtCore.Qt.Key_D:
            self.oneLineDown()
        else:
            QtGui.QWidget.keyPressEvent(self, event)
    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            if self.isWaitingAfterLine:
                self.isWaitingAfterLine = False
                self.newPiece()
            else:
                self.oneLineDown()
        else:
            QtGui.QFrame.timerEvent(self, event)
    def clearBoard(self):
        for i in range(Board.BoardHeight * Board.BoardWidth):
            self.board.append(Tetrominoes.NoShape)
    def dropDown(self):
        newY = self.curY
        while newY > 0:
            if not self.tryMove(self.curPiece, self.curX, newY - 1):
                break
            newY -= 1
        self.pieceDropped()
    def oneLineDown(self):
        if not self.tryMove(self.curPiece, self.curX, self.curY - 1):
            self.pieceDropped()
    def pieceDropped(self):
        for i in range(4):
            x = self.curX   self.curPiece.x(i)
            y = self.curY - self.curPiece.y(i)
            self.setShapeAt(x, y, self.curPiece.shape())
        self.removeFullLines()
        if not self.isWaitingAfterLine:
            self.newPiece()
    def removeFullLines(self):
        numFullLines = 0
        rowsToRemove = []
        for i in range(Board.BoardHeight):
            n = 0
            for j in range(Board.BoardWidth):
                if not self.shapeAt(j, i) == Tetrominoes.NoShape:
                    n = n   1
            if n == 10:
                rowsToRemove.append(i)
        rowsToRemove.reverse()
        for m in rowsToRemove:
            for k in range(m, Board.BoardHeight):
                for l in range(Board.BoardWidth):
                    self.setShapeAt(l, k, self.shapeAt(l, k   1))
        numFullLines = numFullLines   len(rowsToRemove)
        if numFullLines > 0:
            self.numLinesRemoved = self.numLinesRemoved   numFullLines
            self.emit(QtCore.SIGNAL("messageToStatusbar(QString)"),
                str(self.numLinesRemoved))
            self.isWaitingAfterLine = True
            self.curPiece.setShape(Tetrominoes.NoShape)
            self.update()
    def newPiece(self):
        self.curPiece = self.nextPiece
        self.nextPiece.setRandomShape()
        self.curX = Board.BoardWidth / 2   1
        self.curY = Board.BoardHeight - 1   self.curPiece.minY()
        if not self.tryMove(self.curPiece, self.curX, self.curY):
            self.curPiece.setShape(Tetrominoes.NoShape)
            self.timer.stop()
            self.isStarted = False
            self.emit(QtCore.SIGNAL("messageToStatusbar(QString)"), "Game over")
    def tryMove(self, newPiece, newX, newY):
        for i in range(4):
            x = newX   newPiece.x(i)
            y = newY - newPiece.y(i)
            if x < 0 or x >= Board.BoardWidth or y < 0 or y >= Board.BoardHeight:
                return False
            if self.shapeAt(x, y) != Tetrominoes.NoShape:
                return False
        self.curPiece = newPiece
        self.curX = newX
        self.curY = newY
        self.update()
        return True
    def drawSquare(self, painter, x, y, shape):
        colorTable = [0x000000, 0xCC6666, 0x66CC66, 0x6666CC,
                      0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00]
        color = QtGui.QColor(colorTable[shape])
        painter.fillRect(x   1, y   1, self.squareWidth() - 2,
            self.squareHeight() - 2, color)
        painter.setPen(color.light())
        painter.drawLine(x, y   self.squareHeight() - 1, x, y)
        painter.drawLine(x, y, x   self.squareWidth() - 1, y)
        painter.setPen(color.dark())
        painter.drawLine(x   1, y   self.squareHeight() - 1,
            x   self.squareWidth() - 1, y   self.squareHeight() - 1)
        painter.drawLine(x   self.squareWidth() - 1,
            y   self.squareHeight() - 1, x   self.squareWidth() - 1, y   1)
class Tetrominoes(object):
    NoShape = 0
    ZShape = 1
    SShape = 2
    LineShape = 3
    TShape = 4
    SquareShape = 5
    LShape = 6
    MirroredLShape = 7
class Shape(object):
    coordsTable = (
        ((0, 0),     (0, 0),     (0, 0),     (0, 0)),
        ((0, -1),    (0, 0),     (-1, 0),    (-1, 1)),
        ((0, -1),    (0, 0),     (1, 0),     (1, 1)),
        ((0, -1),    (0, 0),     (0, 1),     (0, 2)),
        ((-1, 0),    (0, 0),     (1, 0),     (0, 1)),
        ((0, 0),     (1, 0),     (0, 1),     (1, 1)),
        ((-1, -1),   (0, -1),    (0, 0),     (0, 1)),
        ((1, -1),    (0, -1),    (0, 0),     (0, 1))
    )
    def __init__(self):
        self.coords = [[0,0] for i in range(4)]
        self.pieceShape = Tetrominoes.NoShape
        self.setShape(Tetrominoes.NoShape)
    def shape(self):
        return self.pieceShape
    def setShape(self, shape):
        table = Shape.coordsTable[shape]
        for i in range(4):
            for j in range(2):
                self.coords[i][j] = table[i][j]
        self.pieceShape = shape
    def setRandomShape(self):
        self.setShape(random.randint(1, 7))
    def x(self, index):
        return self.coords[index][0]
    def y(self, index):
        return self.coords[index][1]
    def setX(self, index, x):
        self.coords[index][0] = x
    def setY(self, index, y):
        self.coords[index][1] = y
    def minX(self):
        m = self.coords[0][0]
        for i in range(4):
            m = min(m, self.coords[i][0])
        return m
    def maxX(self):
        m = self.coords[0][0]
        for i in range(4):
            m = max(m, self.coords[i][0])
        return m
    def minY(self):
        m = self.coords[0][1]
        for i in range(4):
            m = min(m, self.coords[i][1])
        return m
    def maxY(self):
        m = self.coords[0][1]
        for i in range(4):
            m = max(m, self.coords[i][1])
        return m
    def rotatedLeft(self):
        if self.pieceShape == Tetrominoes.SquareShape:
            return self
        result = Shape()
        result.pieceShape = self.pieceShape
        for i in range(4):
            result.setX(i, self.y(i))
            result.setY(i, -self.x(i))
        return result
    def rotatedRight(self):
        if self.pieceShape == Tetrominoes.SquareShape:
            return self
        result = Shape()
        result.pieceShape = self.pieceShape
        for i in range(4):
            result.setX(i, -self.y(i))
            result.setY(i, self.x(i))
        return result
class Snake:
    def __init__(self):
        self.length = 4
        self.posArray = [(3,0),(2,0),(1,0),(0,0)]
        self.isDead = 0

class Food:
    def __init__(self):
        self.isExist = 0
        self.pos = (0,0)


class SnakeGame(QWidget):

    def __init__(self):
        super(SnakeGame, self).__init__()
        self.timer = QTimer(self)
        #self.connect(timer, SIGNAL("timeout()"),self,SLOT("update()"))
        self.timer.timeout.connect(self.update)
        self.initGame()
        self.initUI()

    def initUI(self):

        #self.setGeometry(300, 300, 500, 300)
        self.setMaximumSize(500,330)
        self.setMinimumSize(500,330)
        self.setWindowTitle('tcs')
        QtGui.QMessageBox.information( self, "information", _fromUtf8("请使用空格来开始游戏或暂停游戏.") )
        QtGui.QMessageBox.information( self, "information", _fromUtf8("使用上下左右键来控制.") )
        QtGui.QMessageBox.information( self, "information", _fromUtf8("控制小蛇吃到黑色方块,不能撞到自己也不能撞到墙.") )
        self.show()
        qe = QtCore.QEventLoop()             #   line  3
        qe.exec_()

    def paintEvent(self, event):

        qp = QPainter()
        qp.begin(self)

        if self.isStart == -1:
            self.pause(event, qp)
        elif self.isStart == 0:
            self.readyGame(event, qp)
        elif self.isStart == 1:
            self.proceedGame(event, qp)
        else:
            self.overGame(event, qp)

        qp.end()

    def keyPressEvent(self, event):
        key = event.key()
        if self.isStart == 1:
            if key == Qt.Key_Left and self.tag != 'Right':
                self.xch = -1
                self.ych = 0
                self.tag = 'Left'
            if key == Qt.Key_Right and self.tag != 'Left':
                self.xch = 1
                self.ych = 0
                self.tag = 'Right'
            if key == Qt.Key_Down and self.tag != 'Up':
                self.ych = 1
                self.xch = 0
                self.tag = 'Down'
            if key == Qt.Key_Up and self.tag != 'Down':
                self.ych = -1
                self.xch = 0
                self.tag = 'Up'
        if key == Qt.Key_Space:
            if self.isStart == 0:
                self.isStart = 1
            elif self.isStart == 2:
                self.initGame()
                self.isStart = 0
            else:
                self.isStart = -self.isStart

    def drawSquare(self, qp, xx, yy):
        qp.drawRect(xx*10, yy*10, 10, 10)
    def drawBlackSquare(self, qp, xx, yy):
        qp.setBrush(QColor(0,0,0))
        qp.drawRect(xx*10,yy*10,10,10)

    def drawSnake(self,qp):
        for a in self.snake.posArray:
            xx = a[0]
            yy = a[1]
            self.drawSquare(qp, xx, yy)

    def moveSnake(self):
        l = len(self.snake.posArray)
        for i in xrange(l-1, 0, -1):
            self.snake.posArray[i] = self.snake.posArray[i-1]
        xx = self.snake.posArray[0][0]
        yy = self.snake.posArray[0][1]
        self.snake.posArray[0] = (xx self.xch, yy self.ych)
    #def isDead():

    def produceFood(self):
        if self.food.isExist == 0:
            #random.seed()
            xx = random.randint(0, 49)
            yy = random.randint(0, 29)
            while (xx, yy) in self.snake.posArray:
                xx = random.randint(0, 49)
                yy = random.randint(0, 29)
            self.food.pos = (xx, yy)
            self.food.isExist = 1

    def drawFood(self, qp):
        self.drawBlackSquare(qp, self.food.pos[0], self.food.pos[1])

    def eatFood(self):
        l = len(self.snake.posArray)
        if self.snake.posArray[0] == self.food.pos:
            self.snake.posArray.append(self.snake.posArray[l-1])
            self.food.isExist = 0
            self.score = self.score   self.lvl * 100

    def drawCoverText(self, event, qp, text, color):

        qp.setPen(color)
        qp.setFont(QFont('Decorative', 30))
        qp.drawText(event.rect(), Qt.AlignCenter, text)

    def drawStatusText(self, qp, text, xx, yy):
        qp.setPen(QColor(0,0,0))
        qp.setFont(QFont('Decorative', 15))
        qp.drawText(xx, yy, text)

    def drawStatus(self, qp):
        text1 = 'SCORE: '   str(self.score)
        self.drawStatusText(qp, text1, 10, 315)
        text2 = 'LVL: '   str(self.lvl)
        self.drawStatusText(qp, text2, 300, 315)

    def pause(self, event, qp):
        color = QColor(0, 0, 0)
        text = 'Pause'
        self.drawCoverText(event, qp, text, color)

    def overGame(self, event, qp):
        color = QColor(0, 0, 0)
        text = 'Game Over'
        self.drawCoverText(event, qp, text, color)
        self.drawSnake(qp)
        self.drawBorder(qp)
        text1 = 'SCORE: '   str(self.score)
        self.drawStatusText(qp, text1, 185, 220)
        self.drawFood(qp)
        self.isStart = 2

    def initGame(self):
        self.xch, self.ych = 1,0
        self.tag = 'Right'
        self.isStart = 0
        self.snake = Snake()
        self.food = Food()
        self.score = 0
        self.lvl = 1
        self.timer.start(240)

    def readyGame(self, event, qp):
        self.drawSnake(qp)
        self.drawBorder(qp)
        text = 'Press Space To Play'
        color = QColor(0, 0, 0)
        self.drawCoverText(event, qp, text, color)

    def checkLiveOrDead(self):
        xx = self.snake.posArray[0][0]   self.xch
        yy = self.snake.posArray[0][1]   self.ych
        if xx < 0 or yy < 0 or xx >49 or yy >29 or (xx, yy) in self.snake.posArray:
            self.snake.isDead = 1

    def checkLvl(self):
        if self.score  >= self.lvl * self.lvl *1000:
            time = 240 - self.lvl * 30
            self.lvl = self.lvl   1
            if time < 0:
                time = 1
            self.timer.start(time)

    def drawBorder(self, qp):
        qp.setPen(QColor(0,0,0))
        qp.drawRect(0,0,500,300)

    def proceedGame(self, event, qp):
        self.checkLiveOrDead()
        self.checkLvl()
        if self.snake.isDead:
            self.overGame(event, qp)
        else:
            self.drawBorder(qp)
            self.moveSnake()
            self.eatFood()
            self.drawSnake(qp)
            self.produceFood()
            self.drawFood(qp)
            self.drawStatus(qp)

def fin():
    app = QtGui.QApplication(sys.argv)
    ex = main()
    sys.exit(app.exec_())


if __name__ == '__main__':
    fin()


实例下载地址

python实用多功能计算器

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警