pyqt学习笔记:计算器制作

本次尝试用pycharm和QTdesigner做一个简易的计算器。
首先怕自己忘记,先记录几个小技巧:

小技巧

一.修改label的字体颜色

1.选择需要更改字体的文本框
2.在“Filter”中输入“pa”,回车键
3.双击“Change Palette”–>双击WindowText对应的颜色bar

二、使用pycharm运行由PyUIC转出生成的py文件

import sys

from PyQt5.QtWidgets import QApplication , QMainWindow ,QWidget

from calculator import *

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(mainWindow)
    mainWindow.show()
    sys.exit(app.exec_())

其中,calculator是.ui文件的名字

三、插入图片

拖一个Label控件,在属性框里选pixmap,点击右侧的下箭头,在弹出的菜单中选择“选择文件…”

四、插入背景图(效果一般)

1.在.ui目录下新建文本文档
在这里插入图片描述
并将其后缀名改为qrc
Win10系统自动隐藏后缀名,如不知如何调出来,可参照:
百度教程-显示后缀名
2.打开QtDesigner,调出资源管理器
在这里插入图片描述
点击铅笔点击左下方第二个按钮找到1.qrc
在这里插入图片描述
这时,我们的资源库中已有图片
3.右键需要加的地方,点击Edit Style Sheet
在这里插入图片描述
点击Add Resource在这里插入图片描述
添加进来
在这里插入图片描述
将文本框中的字改成background-image:url(:/2.jpg)在这里插入图片描述
点击确认
在这里插入图片描述
效果很一般,如何把背景处理得更自然还没有解决方法。

计算器制作

在这里插入图片描述

函数解析

self.lineEdit.insert('1')

向文本编辑框中加入1(单引号中的内容可以修改)

self.close()

退出

self.lineEdit.clear()

删除文本编辑框中的内容

self.textBrowser.clear()

删除文本显示框中的内容

self.textBrowser.append('%s= %.2f' % (text, eval(text)))

向文本显示框中输入

self.lineEdit.backspace()

文本编辑框退格

w.pushButton.clicked.connect(w.ps_bt)

按键链接

text = self.lineEdit.text()

提取输入框中的文本

功能测试

在这里插入图片描述
所有功能均可正常使用

改进空间

可以制作复数计算器、解方程等

源码

calculator.py

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

# Form implementation generated from reading ui file 'calculator.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, calculate):
        calculate.setObjectName("calculate")
        calculate.resize(800, 601)
        self.centralwidget = QtWidgets.QWidget(calculate)
        self.centralwidget.setObjectName("centralwidget")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(50, 140, 361, 41))
        self.lineEdit.setObjectName("lineEdit")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(190, 70, 121, 71))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(170, 85, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(170, 85, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
        self.label.setPalette(palette)
        font = QtGui.QFont()
        #font.setFamily("汉仪悠然体简")
        font.setPointSize(22)
        font.setBold(False)
        font.setItalic(False)
        font.setUnderline(False)
        font.setWeight(50)
        font.setStrikeOut(False)
        self.label.setFont(font)
        self.label.setMouseTracking(False)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(0, 0, 791, 81))
        '''self.label_2.setText("")
        self.label_2.setPixmap(QtGui.QPixmap("../../../../Desktop/1.bmp"))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(0, 510, 791, 81))
        self.label_3.setText("")
        self.label_3.setPixmap(QtGui.QPixmap("../../../../Desktop/1.bmp"))
        self.label_3.setObjectName("label_3")'''
        self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget.setGeometry(QtCore.QRect(50, 200, 411, 281))
        self.layoutWidget.setObjectName("layoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton_16 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_16.setObjectName("pushButton_16")
        self.gridLayout.addWidget(self.pushButton_16, 5, 2, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 1, 1, 1, 1)
        self.pushButton_5 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_5.setObjectName("pushButton_5")
        self.gridLayout.addWidget(self.pushButton_5, 3, 1, 1, 1)
        self.pushButton_7 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_7.setObjectName("pushButton_7")
        self.gridLayout.addWidget(self.pushButton_7, 4, 0, 1, 1)
        self.pushButton_15 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_15.setObjectName("pushButton_15")
        self.gridLayout.addWidget(self.pushButton_15, 5, 3, 1, 1)
        self.pushButton_14 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_14.setObjectName("pushButton_14")
        self.gridLayout.addWidget(self.pushButton_14, 4, 3, 1, 1)
        self.pushButton_10 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_10.setObjectName("pushButton_10")
        self.gridLayout.addWidget(self.pushButton_10, 5, 0, 1, 1)
        self.pushButton_12 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_12.setObjectName("pushButton_12")
        self.gridLayout.addWidget(self.pushButton_12, 1, 3, 1, 1)
        self.pushButton = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 1, 0, 1, 1)
        self.pushButton_8 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_8.setObjectName("pushButton_8")
        self.gridLayout.addWidget(self.pushButton_8, 4, 1, 1, 1)
        self.pushButton_4 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout.addWidget(self.pushButton_4, 3, 0, 1, 1)
        self.pushButton_6 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_6.setObjectName("pushButton_6")
        self.gridLayout.addWidget(self.pushButton_6, 3, 2, 1, 1)
        self.pushButton_11 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_11.setObjectName("pushButton_11")
        self.gridLayout.addWidget(self.pushButton_11, 5, 1, 1, 1)
        self.pushButton_13 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_13.setObjectName("pushButton_13")
        self.gridLayout.addWidget(self.pushButton_13, 3, 3, 1, 1)
        self.pushButton_9 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_9.setObjectName("pushButton_9")
        self.gridLayout.addWidget(self.pushButton_9, 4, 2, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 1, 2, 1, 1)
        self.pushButton_18 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_18.setGeometry(QtCore.QRect(420, 140, 41, 41))
        self.pushButton_18.setObjectName("pushButton_18")
        self.layoutWidget1 = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget1.setGeometry(QtCore.QRect(480, 140, 311, 341))
        self.layoutWidget1.setObjectName("layoutWidget1")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget1)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.textBrowser = QtWidgets.QTextBrowser(self.layoutWidget1)
        self.textBrowser.setObjectName("textBrowser")
        self.verticalLayout.addWidget(self.textBrowser)
        self.pushButton_20 = QtWidgets.QPushButton(self.layoutWidget1)
        self.pushButton_20.setObjectName("pushButton_20")
        self.verticalLayout.addWidget(self.pushButton_20)
        self.pushButton_17 = QtWidgets.QPushButton(self.layoutWidget1)
        self.pushButton_17.setObjectName("pushButton_17")
        self.verticalLayout.addWidget(self.pushButton_17)
        self.pushButton_19 = QtWidgets.QPushButton(self.layoutWidget1)
        self.pushButton_19.setObjectName("pushButton_19")
        self.verticalLayout.addWidget(self.pushButton_19)
        self.menubar = QtWidgets.QMenuBar(calculate)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        self.menu_2 = QtWidgets.QMenu(self.menubar)
        self.menu_2.setObjectName("menu_2")
        self.statusbar = QtWidgets.QStatusBar(calculate)
        self.statusbar.setObjectName("statusbar")
        self.menubar.addAction(self.menu.menuAction())
        self.menubar.addAction(self.menu_2.menuAction())

        self.retranslateUi(calculate)
        QtCore.QMetaObject.connectSlotsByName(calculate)

    def retranslateUi(self, calculate):
        _translate = QtCore.QCoreApplication.translate
        calculate.setWindowTitle(_translate("calculate", "calculate"))
        self.label.setText(_translate("calculate", "计算器"))
        self.pushButton_16.setText(_translate("calculate", "="))
        self.pushButton_2.setText(_translate("calculate", "2"))
        self.pushButton_5.setText(_translate("calculate", "5"))
        self.pushButton_7.setText(_translate("calculate", "7"))
        self.pushButton_15.setText(_translate("calculate", "/"))
        self.pushButton_14.setText(_translate("calculate", "*"))
        self.pushButton_10.setText(_translate("calculate", "0"))
        self.pushButton_12.setText(_translate("calculate", "+"))
        self.pushButton.setText(_translate("calculate", "1"))
        self.pushButton_8.setText(_translate("calculate", "8"))
        self.pushButton_4.setText(_translate("calculate", "4"))
        self.pushButton_6.setText(_translate("calculate", "6"))
        self.pushButton_11.setText(_translate("calculate", "."))
        self.pushButton_13.setText(_translate("calculate", "-"))
        self.pushButton_9.setText(_translate("calculate", "9"))
        self.pushButton_3.setText(_translate("calculate", "3"))
        self.pushButton_18.setText(_translate("calculate", "<-"))
        self.textBrowser.setHtml(_translate("calculate", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">显示计算结果</span></p></body></html>"))
        self.pushButton_20.setText(_translate("calculate", "清空历史结果"))
        self.pushButton_17.setText(_translate("calculate", "清空输入框"))
        self.pushButton_19.setText(_translate("calculate", "退出"))
        self.menu.setTitle(_translate("calculate", "普通计算器"))
        self.menu_2.setTitle(_translate("calculate", "复数计算器"))

main.py

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow

from calculator import Ui_MainWindow

class mwindow(QWidget, Ui_MainWindow):

    def __init__(self):
        super(mwindow, self).__init__()

        self.setupUi(self)

    def ps_bt(self):
        self.lineEdit.insert('1')

    def ps_bt1(self):
        self.lineEdit.insert('2')

    def ps_bt2(self):
        self.lineEdit.insert('3')

    def ps_bt3(self):
        self.lineEdit.insert('4')

    def ps_bt4(self):
        self.lineEdit.insert('5')

    def ps_bt5(self):
        self.lineEdit.insert('6')

    def ps_bt6(self):
        self.lineEdit.insert('7')

    def ps_bt7(self):
        self.lineEdit.insert('8')

    def ps_bt8(self):
        self.lineEdit.insert('9')

    def ps_bt9(self):
        self.lineEdit.insert('0')

    def ps_bt10(self):
        self.lineEdit.insert('.')

    def ps_btjia(self):
        self.lineEdit.insert('+')

    def ps_btjian(self):
        self.lineEdit.insert('-')

    def ps_btcheng(self):
        self.lineEdit.insert('*')

    def ps_btchu(self):
        self.lineEdit.insert('/')

    def cancel(self):
        self.lineEdit.clear()

    def quit(self):
        self.close()

    def backspace(self):
        self.lineEdit.backspace()

    def can_his(self):#清除历史缓存
        self.textBrowser.clear()

    def calcu(self):
        text = self.lineEdit.text()

        self.textBrowser.append('%s= %.2f' % (text, eval(text)))

        self.lineEdit.clear()

if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = mwindow()

    w.pushButton.clicked.connect(w.ps_bt)

    w.pushButton_2.clicked.connect(w.ps_bt1)

    w.pushButton_3.clicked.connect(w.ps_bt2)

    w.pushButton_4.clicked.connect(w.ps_bt3)

    w.pushButton_5.clicked.connect(w.ps_bt4)

    w.pushButton_6.clicked.connect(w.ps_bt5)

    w.pushButton_7.clicked.connect(w.ps_bt6)

    w.pushButton_8.clicked.connect(w.ps_bt7)

    w.pushButton_9.clicked.connect(w.ps_bt8)

    w.pushButton_10.clicked.connect(w.ps_bt9)

    w.pushButton_11.clicked.connect(w.ps_bt10)

    w.pushButton_17.clicked.connect(w.cancel)

    w.pushButton_19.clicked.connect(w.quit)

    w.pushButton_18.clicked.connect(w.backspace)

    w.pushButton_12.clicked.connect(w.ps_btjia)

    w.pushButton_13.clicked.connect(w.ps_btjian)

    w.pushButton_14.clicked.connect(w.ps_btcheng)

    w.pushButton_15.clicked.connect(w.ps_btchu)

    w.pushButton_16.clicked.connect(w.calcu)

    w.pushButton_20.clicked.connect(w.can_his)


    w.show()

    sys.exit(app.exec_())

参考:https://blog.csdn.net/yufen9987/article/details/85611711

https://blog.csdn.net/shangxiaqiusuo1/article/details/81035046

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值