本文实例为大家分享了pyqt5实现简易计算器的具体代码,供大家参考,具体内容如下
效果图:
界面代码
calc_interface.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# -*- coding: utf-8 -*- # form implementation generated from reading ui file 'calc_interface.ui' # # created by: pyqt5 ui code generator 5.8.2 # # warning! all changes made in this file will be lost! from pyqt5 import qtcore, qtgui, qtwidgets class ui_mainwindow( object ): def setupui( self , mainwindow): mainwindow.setobjectname( "mainwindow" ) mainwindow.resize( 647 , 675 ) self .centralwidget = qtwidgets.qwidget(mainwindow) self .centralwidget.setobjectname( "centralwidget" ) self .b_1 = qtwidgets.qpushbutton( self .centralwidget) self .b_1.setgeometry(qtcore.qrect( 10 , 330 , 71 , 71 )) self .b_1.setobjectname( "b_1" ) self .b_2 = qtwidgets.qpushbutton( self .centralwidget) self .b_2.setgeometry(qtcore.qrect( 80 , 330 , 71 , 71 )) self .b_2.setobjectname( "b_2" ) self .b_3 = qtwidgets.qpushbutton( self .centralwidget) self .b_3.setgeometry(qtcore.qrect( 150 , 330 , 71 , 71 )) self .b_3.setobjectname( "b_3" ) self .b_6 = qtwidgets.qpushbutton( self .centralwidget) self .b_6.setgeometry(qtcore.qrect( 150 , 400 , 71 , 71 )) self .b_6.setobjectname( "b_6" ) self .b_4 = qtwidgets.qpushbutton( self .centralwidget) self .b_4.setgeometry(qtcore.qrect( 10 , 400 , 71 , 71 )) self .b_4.setobjectname( "b_4" ) self .b_5 = qtwidgets.qpushbutton( self .centralwidget) self .b_5.setgeometry(qtcore.qrect( 80 , 400 , 71 , 71 )) self .b_5.setobjectname( "b_5" ) self .b_8 = qtwidgets.qpushbutton( self .centralwidget) self .b_8.setgeometry(qtcore.qrect( 80 , 470 , 71 , 71 )) self .b_8.setobjectname( "b_8" ) self .b_9 = qtwidgets.qpushbutton( self .centralwidget) self .b_9.setgeometry(qtcore.qrect( 150 , 470 , 71 , 71 )) self .b_9.setobjectname( "b_9" ) self .b_7 = qtwidgets.qpushbutton( self .centralwidget) self .b_7.setgeometry(qtcore.qrect( 10 , 470 , 71 , 71 )) self .b_7.setobjectname( "b_7" ) self .b_eq = qtwidgets.qpushbutton( self .centralwidget) self .b_eq.setgeometry(qtcore.qrect( 150 , 540 , 211 , 71 )) self .b_eq.setobjectname( "b_eq" ) self .b_mod = qtwidgets.qpushbutton( self .centralwidget) self .b_mod.setgeometry(qtcore.qrect( 220 , 400 , 71 , 71 )) self .b_mod.setobjectname( "b_mod" ) self .b_bra_l = qtwidgets.qpushbutton( self .centralwidget) self .b_bra_l.setgeometry(qtcore.qrect( 220 , 330 , 71 , 71 )) self .b_bra_l.setobjectname( "b_bra_l" ) self .b_div = qtwidgets.qpushbutton( self .centralwidget) self .b_div.setgeometry(qtcore.qrect( 220 , 260 , 71 , 71 )) self .b_div.setobjectname( "b_div" ) self .b_add = qtwidgets.qpushbutton( self .centralwidget) self .b_add.setgeometry(qtcore.qrect( 10 , 260 , 71 , 71 )) self .b_add.setobjectname( "b_add" ) self .b_sub = qtwidgets.qpushbutton( self .centralwidget) self .b_sub.setgeometry(qtcore.qrect( 80 , 260 , 71 , 71 )) self .b_sub.setobjectname( "b_sub" ) self .b_mul = qtwidgets.qpushbutton( self .centralwidget) self .b_mul.setgeometry(qtcore.qrect( 150 , 260 , 71 , 71 )) self .b_mul.setobjectname( "b_mul" ) self .b_pow = qtwidgets.qpushbutton( self .centralwidget) self .b_pow.setgeometry(qtcore.qrect( 290 , 260 , 71 , 71 )) self .b_pow.setobjectname( "b_pow" ) self .b_pai = qtwidgets.qpushbutton( self .centralwidget) self .b_pai.setgeometry(qtcore.qrect( 290 , 400 , 71 , 71 )) self .b_pai.setobjectname( "b_pai" ) self .b_bra_r = qtwidgets.qpushbutton( self .centralwidget) self .b_bra_r.setgeometry(qtcore.qrect( 290 , 330 , 71 , 71 )) self .b_bra_r.setobjectname( "b_bra_r" ) self .l_hist = qtwidgets.qlistwidget( self .centralwidget) self .l_hist.setgeometry(qtcore.qrect( 380 , 10 , 256 , 601 )) self .l_hist.setobjectname( "l_hist" ) self .e_view = qtwidgets.qtextedit( self .centralwidget) self .e_view.setgeometry(qtcore.qrect( 10 , 10 , 351 , 231 )) font = qtgui.qfont() font.setfamily( "adobe caslon pro bold" ) font.setpointsize( 22 ) font.setbold(true) font.setweight( 75 ) self .e_view.setfont(font) self .e_view.setobjectname( "e_view" ) self .b_0 = qtwidgets.qpushbutton( self .centralwidget) self .b_0.setgeometry(qtcore.qrect( 80 , 540 , 71 , 71 )) self .b_0.setobjectname( "b_0" ) self .b_pt = qtwidgets.qpushbutton( self .centralwidget) self .b_pt.setgeometry(qtcore.qrect( 10 , 540 , 71 , 71 )) self .b_pt.setobjectname( "b_pt" ) self .b_del = qtwidgets.qpushbutton( self .centralwidget) self .b_del.setgeometry(qtcore.qrect( 220 , 470 , 71 , 71 )) self .b_del.setobjectname( "b_del" ) self .b_clc = qtwidgets.qpushbutton( self .centralwidget) self .b_clc.setgeometry(qtcore.qrect( 290 , 470 , 71 , 71 )) self .b_clc.setobjectname( "b_clc" ) mainwindow.setcentralwidget( self .centralwidget) self .menubar = qtwidgets.qmenubar(mainwindow) self .menubar.setgeometry(qtcore.qrect( 0 , 0 , 647 , 30 )) self .menubar.setobjectname( "menubar" ) mainwindow.setmenubar( self .menubar) self .statusbar = qtwidgets.qstatusbar(mainwindow) self .statusbar.setobjectname( "statusbar" ) mainwindow.setstatusbar( self .statusbar) self .retranslateui(mainwindow) qtcore.qmetaobject.connectslotsbyname(mainwindow) def retranslateui( self , mainwindow): _translate = qtcore.qcoreapplication.translate mainwindow.setwindowtitle(_translate( "mainwindow" , "mainwindow" )) self .b_1.settext(_translate( "mainwindow" , "1" )) self .b_2.settext(_translate( "mainwindow" , "2" )) self .b_3.settext(_translate( "mainwindow" , "3" )) self .b_6.settext(_translate( "mainwindow" , "6" )) self .b_4.settext(_translate( "mainwindow" , "4" )) self .b_5.settext(_translate( "mainwindow" , "5" )) self .b_8.settext(_translate( "mainwindow" , "8" )) self .b_9.settext(_translate( "mainwindow" , "9" )) self .b_7.settext(_translate( "mainwindow" , "7" )) self .b_eq.settext(_translate( "mainwindow" , "=" )) self .b_mod.settext(_translate( "mainwindow" , "%" )) self .b_bra_l.settext(_translate( "mainwindow" , "(" )) self .b_div.settext(_translate( "mainwindow" , "/" )) self .b_add.settext(_translate( "mainwindow" , "+" )) self .b_sub.settext(_translate( "mainwindow" , "-" )) self .b_mul.settext(_translate( "mainwindow" , "*" )) self .b_pow.settext(_translate( "mainwindow" , "^" )) self .b_pai.settext(_translate( "mainwindow" , "π" )) self .b_bra_r.settext(_translate( "mainwindow" , ")" )) self .b_0.settext(_translate( "mainwindow" , "0" )) self .b_pt.settext(_translate( "mainwindow" , "." )) self .b_del.settext(_translate( "mainwindow" , "删除" )) self .b_clc.settext(_translate( "mainwindow" , "清空" )) |
主逻辑代码
calc_main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
from pyqt5.qtcore import * from pyqt5.qtgui import * from pyqt5.qtwidgets import * from calc_interface import ui_mainwindow import os,sys global e_view pluginspath = 'pyqt5/qt/plugins' if os.path.exists(pluginspath): #指定插件路径。源码运行时不会生效,打包后运行检测到路径,加载插件 qapplication.addlibrarypath(pluginspath) class mymainwindow(qmainwindow, ui_mainwindow): def forge_link( self ): self .b_0.clicked.connect( self .button_event( 0 )) self .b_1.clicked.connect( self .button_event( 1 )) self .b_2.clicked.connect( self .button_event( 2 )) self .b_3.clicked.connect( self .button_event( 3 )) self .b_4.clicked.connect( self .button_event( 4 )) self .b_5.clicked.connect( self .button_event( 5 )) self .b_6.clicked.connect( self .button_event( 6 )) self .b_7.clicked.connect( self .button_event( 7 )) self .b_8.clicked.connect( self .button_event( 8 )) self .b_9.clicked.connect( self .button_event( 9 )) self .b_add.clicked.connect( self .button_event( '+' )) self .b_sub.clicked.connect( self .button_event( '-' )) self .b_mul.clicked.connect( self .button_event( '*' )) self .b_div.clicked.connect( self .button_event( '/' )) self .b_pow.clicked.connect( self .button_event( '**' )) self .b_bra_l.clicked.connect( self .button_event( '(' )) self .b_bra_r.clicked.connect( self .button_event( ')' )) self .b_mod.clicked.connect( self .button_event( '%' )) self .b_pai.clicked.connect( self .button_event( '3.1415926' )) self .b_pt.clicked.connect( self .button_event( '.' )) self .b_del.clicked.connect( self .delete_event) self .b_clc.clicked.connect( self .clear_event) self .b_eq.clicked.connect( self .calc_complish) def __init__( self , parent = none): super (mymainwindow, self ).__init__(parent) self .setupui( self ) self .forge_link() #连接槽函数 def button_event( self ,arg): # print(dir(self.e_view)) global e_view e_view = self .e_view def fun(): #返回一个自定义的槽函数 global e_view txt = e_view.toplaintext() e_view.settext(txt + str (arg)) return fun def calc_complish( self ): txt = self .e_view.toplaintext() ans = '' try : ans = str ( eval (txt)) except baseexception: ans = 'matherror' # print(ans) self .clear_event() self .e_view.settext(ans) self .l_hist.additem(txt + '=' + ans) def clear_event( self ): self .e_view.settext('') def delete_event( self ): txt = self .e_view.toplaintext() txt = txt[: len (txt) - 1 ] self .e_view.settext(txt) if __name__ = = '__main__' : app = qapplication(sys.argv) mywin = mymainwindow() mywin.show() sys.exit(app. exec ()) |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/TQCAI666/article/details/80532034