zoukankan      html  css  js  c++  java
  • python自写软件(二)

    承上博客背景,用了Pyqt5先实现了个简单的计算器,我觉得重要的就是py自带的eval函数吧

    什么时候写了播放器或者实现了最近想写的java目录树或者xml解析器我再写吧

    思路就是点击按钮就加到string形成算法表达式,再依靠python强大的计算功能。

    以后有新的版本再说

    github地址

    5.1更新,补全()清空余数

      1 from PyQt5.QtWidgets import QLabel, QApplication, QDialog, QGridLayout, QHBoxLayout, QPushButton, QFormLayout, 
      2     QWidget, 
      3     QLineEdit
      4 import sys
      5 from PyQt5.QtCore import Qt
      6 from PyQt5.QtGui import QIcon
      7 import test
      8 
      9 
     10 class calculator_frame(QDialog):
     11     def __init__(self):
     12         super().__init__()
     13         self.shower = QLineEdit()
     14         self.label = QLabel()
     15         self.init()
     16         self.tmp_string_num = ""
     17         self.tmp_num = 0
     18         self.sum_num = ""
     19         self.num = 0
     20 
     21     def clear(self):
     22         self.tmp_string_num = ""
     23         self.tmp_num = 0
     24         self.sum_num = ""
     25         self.num = 0
     26         self.shower.setText("")
     27         self.label.setText("")
     28 
     29     def init(self):
     30 
     31         self.setWindowTitle("myCalculator")
     32         self.setWindowIcon(QIcon(':/calculator.ico'))
     33         self.label.setStyleSheet('font-size:20px;color:rgb(180,180,180,255);')
     34         self.shower.setStyleSheet('font-size:20px;color:rgb(180,180,180,255);')
     35         self.shower.setEnabled(False)
     36         hbox = QHBoxLayout()
     37         form_widget = QWidget()
     38         grid_widget = QWidget()
     39         form_layout = QFormLayout()
     40         form_layout.addRow("memory:", self.shower)
     41         form_layout.addRow("result=", self.label)
     42         form_widget.setLayout(form_layout)
     43         # self.setFixedSize(300,200)
     44 
     45         grid_layout = QGridLayout()
     46         one = QPushButton("1")
     47         two = QPushButton("2")
     48         three = QPushButton("3")
     49         four = QPushButton("4")
     50         five = QPushButton("5")
     51         six = QPushButton("6")
     52         seven = QPushButton("7")
     53         eight = QPushButton("8")
     54         nine = QPushButton("9")
     55         zero = QPushButton("0")
     56         point = QPushButton(".")
     57         equal = QPushButton("=")
     58         add = QPushButton("+")
     59         sub = QPushButton("-")
     60         mult = QPushButton("*")
     61         div = QPushButton("/")
     62         remove = QPushButton("AC")
     63         open_paren = QPushButton("(")
     64         close_paren = QPushButton(")")
     65         remainer = QPushButton("%")
     66         one.clicked.connect(self.clicker)
     67         two.clicked.connect(self.clicker)
     68         three.clicked.connect(self.clicker)
     69         four.clicked.connect(self.clicker)
     70         five.clicked.connect(self.clicker)
     71         six.clicked.connect(self.clicker)
     72         seven.clicked.connect(self.clicker)
     73         eight.clicked.connect(self.clicker)
     74         nine.clicked.connect(self.clicker)
     75         zero.clicked.connect(self.clicker)
     76         add.clicked.connect(self.clicker)
     77         sub.clicked.connect(self.clicker)
     78         mult.clicked.connect(self.clicker)
     79         div.clicked.connect(self.clicker)
     80         equal.clicked.connect(self.clicker)
     81         point.clicked.connect(self.clicker)
     82         remove.clicked.connect(self.clicker)
     83         open_paren.clicked.connect(self.clicker)
     84         close_paren.clicked.connect(self.clicker)
     85         remainer.clicked.connect(self.clicker)
     86 
     87         one.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     88         two.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     89         three.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     90         four.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     91         five.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     92         six.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     93         seven.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     94         eight.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     95         nine.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     96         zero.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     97         point.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     98         equal.setStyleSheet('font-size:32px;color:rgb(0,0,0,255);')
     99         add.setStyleSheet('font-size:28px;color:rgb(0,0,0,255);')
    100         sub.setStyleSheet('font-size:28px;color:rgb(0,0,0,255);')
    101         mult.setStyleSheet('font-size:28px;color:rgb(0,0,0,255);')
    102         div.setStyleSheet('font-size:28px;color:rgb(0,0,0,255);')
    103         remove.setStyleSheet('font-size:28px;color:rgb(0,0,0,255);')
    104         open_paren.setStyleSheet('font-size:28px;color:rgb(0,0,0,255);')
    105         close_paren.setStyleSheet('font-size:28px;color:rgb(0,0,0,255);')
    106         remainer.setStyleSheet('font-size:28px;color:rgb(0,0,0,255);')
    107 
    108         grid_layout.addWidget(add, 2, 4)
    109         grid_layout.addWidget(div, 1, 4)
    110         grid_layout.addWidget(mult, 0, 4)
    111         grid_layout.addWidget(sub, 3, 4)
    112         grid_layout.addWidget(zero, 3, 2)
    113         grid_layout.addWidget(point, 3, 1)
    114         grid_layout.addWidget(equal, 3, 3)
    115         grid_layout.addWidget(one, 2, 1)
    116         grid_layout.addWidget(two, 2, 2)
    117         grid_layout.addWidget(three, 2, 3)
    118         grid_layout.addWidget(four, 1, 1)
    119         grid_layout.addWidget(five, 1, 2)
    120         grid_layout.addWidget(six, 1, 3)
    121         grid_layout.addWidget(seven, 0, 1)
    122         grid_layout.addWidget(eight, 0, 2)
    123         grid_layout.addWidget(nine, 0, 3)
    124         grid_layout.addWidget(remove, 0, 5)
    125         grid_layout.addWidget(remainer, 3, 5)
    126         grid_layout.addWidget(open_paren, 1, 5)
    127         grid_layout.addWidget(close_paren, 2, 5)
    128         grid_widget.setLayout(grid_layout)
    129         hbox.addWidget(form_widget, 0, Qt.AlignLeft)
    130         hbox.addWidget(grid_widget, 0, Qt.AlignRight)
    131         self.setLayout(hbox)
    132 
    133     def clicker(self):
    134         num_or_opt = self.sender().text()
    135         if num_or_opt.isdigit():
    136             self.tmp_string_num += str(num_or_opt)
    137             self.tmp_num = int(self.tmp_string_num)
    138             self.shower.setText(self.tmp_string_num)
    139             self.sum_num += self.tmp_string_num
    140             print(self.sum_num)
    141             self.label.setText(self.sum_num)
    142             self.tmp_string_num = ""
    143             self.tmp_num = 0
    144         else:
    145             if not num_or_opt == "=" and (not num_or_opt == "AC"):
    146                 self.tmp_string_num += num_or_opt
    147                 self.sum_num += num_or_opt
    148                 self.shower.setText(self.tmp_string_num)
    149                 self.label.setText(self.sum_num)
    150                 self.tmp_string_num = ""
    151                 self.tmp_num = 0
    152             elif num_or_opt == "AC":
    153                 self.clear()
    154             else:
    155                 self.label.setText(str(eval(self.sum_num)))
    156 
    157 
    158 if __name__ == '__main__':
    159     app = QApplication(sys.argv)
    160     mainFrame = calculator_frame()
    161     mainFrame.show()
    162     sys.exit(app.exec_())

    eval很关键,不然破不了这死局

  • 相关阅读:
    Spring面试题目
    20个非常有用的Java程序片段
    第一个前台页面----xflow的页面
    java中io对文件操作的简单介绍
    java的两种异常runtimeException和checkedException
    jquery的校验规则的方法
    json对象的简单介绍
    http的状态码(中英文)
    eclipse的调试方法的简单介绍
    软件测试人员需要精通的开发语言(3)--- Linux
  • 原文地址:https://www.cnblogs.com/otakus/p/pysoft2.html
Copyright © 2011-2022 走看看