Skip to content

Instantly share code, notes, and snippets.

@ozcanyarimdunya
Last active August 10, 2017 08:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ozcanyarimdunya/a030e607a2e8f67e5969c8ee544bd11c to your computer and use it in GitHub Desktop.
Save ozcanyarimdunya/a030e607a2e8f67e5969c8ee544bd11c to your computer and use it in GitHub Desktop.
Calculator
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ui_xml\calc.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(340, 218)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.txt_res = QtWidgets.QLineEdit(self.centralwidget)
self.txt_res.setObjectName("txt_res")
self.verticalLayout_2.addWidget(self.txt_res)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.btn_4 = QtWidgets.QPushButton(self.centralwidget)
self.btn_4.setObjectName("btn_4")
self.gridLayout.addWidget(self.btn_4, 1, 0, 1, 1)
self.btn_3 = QtWidgets.QPushButton(self.centralwidget)
self.btn_3.setObjectName("btn_3")
self.gridLayout.addWidget(self.btn_3, 0, 2, 1, 1)
self.btn_min = QtWidgets.QPushButton(self.centralwidget)
self.btn_min.setObjectName("btn_min")
self.gridLayout.addWidget(self.btn_min, 0, 3, 1, 1)
self.btn_7 = QtWidgets.QPushButton(self.centralwidget)
self.btn_7.setObjectName("btn_7")
self.gridLayout.addWidget(self.btn_7, 2, 0, 1, 1)
self.btn_8 = QtWidgets.QPushButton(self.centralwidget)
self.btn_8.setObjectName("btn_8")
self.gridLayout.addWidget(self.btn_8, 2, 1, 1, 1)
self.btn_div = QtWidgets.QPushButton(self.centralwidget)
self.btn_div.setObjectName("btn_div")
self.gridLayout.addWidget(self.btn_div, 3, 3, 1, 1)
self.btn_9 = QtWidgets.QPushButton(self.centralwidget)
self.btn_9.setObjectName("btn_9")
self.gridLayout.addWidget(self.btn_9, 2, 2, 1, 1)
self.btn_6 = QtWidgets.QPushButton(self.centralwidget)
self.btn_6.setObjectName("btn_6")
self.gridLayout.addWidget(self.btn_6, 1, 2, 1, 1)
self.btn_plu = QtWidgets.QPushButton(self.centralwidget)
self.btn_plu.setObjectName("btn_plu")
self.gridLayout.addWidget(self.btn_plu, 1, 3, 1, 1)
self.btn_5 = QtWidgets.QPushButton(self.centralwidget)
self.btn_5.setObjectName("btn_5")
self.gridLayout.addWidget(self.btn_5, 1, 1, 1, 1)
self.btn_1 = QtWidgets.QPushButton(self.centralwidget)
self.btn_1.setObjectName("btn_1")
self.gridLayout.addWidget(self.btn_1, 0, 0, 1, 1)
self.btn_0 = QtWidgets.QPushButton(self.centralwidget)
self.btn_0.setObjectName("btn_0")
self.gridLayout.addWidget(self.btn_0, 3, 0, 1, 1)
self.btn_mul = QtWidgets.QPushButton(self.centralwidget)
self.btn_mul.setObjectName("btn_mul")
self.gridLayout.addWidget(self.btn_mul, 2, 3, 1, 1)
self.btn_2 = QtWidgets.QPushButton(self.centralwidget)
self.btn_2.setObjectName("btn_2")
self.gridLayout.addWidget(self.btn_2, 0, 1, 1, 1)
self.btn_eq = QtWidgets.QPushButton(self.centralwidget)
self.btn_eq.setAutoDefault(True)
self.btn_eq.setDefault(True)
self.btn_eq.setFlat(False)
self.btn_eq.setObjectName("btn_eq")
self.gridLayout.addWidget(self.btn_eq, 3, 1, 1, 1)
self.btn_cl = QtWidgets.QPushButton(self.centralwidget)
self.btn_cl.setObjectName("btn_cl")
self.gridLayout.addWidget(self.btn_cl, 3, 2, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
self.verticalLayout_2.addLayout(self.verticalLayout)
MainWindow.setCentralWidget(self.centralwidget)
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.btn_4.setText(_translate("MainWindow", "4"))
self.btn_3.setText(_translate("MainWindow", "3"))
self.btn_min.setText(_translate("MainWindow", "-"))
self.btn_7.setText(_translate("MainWindow", "7"))
self.btn_8.setText(_translate("MainWindow", "8"))
self.btn_div.setText(_translate("MainWindow", "/"))
self.btn_9.setText(_translate("MainWindow", "9"))
self.btn_6.setText(_translate("MainWindow", "6"))
self.btn_plu.setText(_translate("MainWindow", "+"))
self.btn_5.setText(_translate("MainWindow", "5"))
self.btn_1.setText(_translate("MainWindow", "1"))
self.btn_0.setText(_translate("MainWindow", "0"))
self.btn_mul.setText(_translate("MainWindow", "x"))
self.btn_2.setText(_translate("MainWindow", "2"))
self.btn_eq.setText(_translate("MainWindow", "="))
self.btn_cl.setText(_translate("MainWindow", "Clear"))
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>340</width>
<height>218</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLineEdit" name="txt_res"/>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QPushButton" name="btn_4">
<property name="text">
<string>4</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="btn_3">
<property name="text">
<string>3</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QPushButton" name="btn_min">
<property name="text">
<string>-</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="btn_7">
<property name="text">
<string>7</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="btn_8">
<property name="text">
<string>8</string>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QPushButton" name="btn_div">
<property name="text">
<string>/</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="btn_9">
<property name="text">
<string>9</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="btn_6">
<property name="text">
<string>6</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QPushButton" name="btn_plu">
<property name="text">
<string>+</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="btn_5">
<property name="text">
<string>5</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="btn_1">
<property name="text">
<string>1</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="btn_0">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QPushButton" name="btn_mul">
<property name="text">
<string>x</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="btn_2">
<property name="text">
<string>2</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="btn_eq">
<property name="text">
<string>=</string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="btn_cl">
<property name="text">
<string>Clear</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from form_calc import Ui_MainWindow
class Form(QMainWindow, Ui_MainWindow):
def __init__(self):
super(__class__, self).__init__()
self.setupUi(self)
self.show()
self.btn_0.clicked.connect(lambda: self.btn_clicked('0'))
self.btn_1.clicked.connect(lambda: self.btn_clicked('1'))
self.btn_2.clicked.connect(lambda: self.btn_clicked('2'))
self.btn_3.clicked.connect(lambda: self.btn_clicked('3'))
self.btn_4.clicked.connect(lambda: self.btn_clicked('4'))
self.btn_5.clicked.connect(lambda: self.btn_clicked('5'))
self.btn_6.clicked.connect(lambda: self.btn_clicked('6'))
self.btn_7.clicked.connect(lambda: self.btn_clicked('7'))
self.btn_8.clicked.connect(lambda: self.btn_clicked('8'))
self.btn_9.clicked.connect(lambda: self.btn_clicked('9'))
self.btn_min.clicked.connect(lambda: self.btn_clicked('-'))
self.btn_plu.clicked.connect(lambda: self.btn_clicked('+'))
self.btn_mul.clicked.connect(lambda: self.btn_clicked('*'))
self.btn_div.clicked.connect(lambda: self.btn_clicked('/'))
self.btn_eq.clicked.connect(lambda: self.eq_clicked())
self.btn_cl.clicked.connect(lambda: self.txt_res.clear())
def btn_clicked(self, text):
old = self.txt_res.text()
self.txt_res.setText(old + text)
def eq_clicked(self):
text = self.txt_res.text()
try:
res = eval(text)
self.txt_res.setText(str(res))
except:
self.statusbar.showMessage('Error!')
if __name__ == '__main__':
app = QApplication(sys.argv)
form = Form()
sys.exit(app.exec_())
@ozcanyarimdunya
Copy link
Author

1
2
3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment