Dec-26-2020, 09:15 PM
Hello,
I am getting this error:
https://realpython.com/python-pyqt-gui-calculator/
I am trying for hours to fix the problem without any success. Do you see the error??
I am getting this error:
Error:UbuntuUser@ubuntu:~/Desktop/PyQT$ python3 pycalc.py
File "pycalc.py", line 80
for btnText, pos in buttons.items():
^
TabError: inconsistent use of tabs and spaces in indentationwhen running this code: # Filename: pycalc.py
"""PyCalc is a simple calculator built using Python and PyQt5."""
import sys
# Import QApplication and the required widgets from PyQt5.QtWidgets
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QGridLayout
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QVBoxLayout
from functools import partial
__version__ = '0.1'
__author__ = 'Leodanis Pozo Ramos'
# Create a subclass of QMainWindow to setup the calculator's GUI
class PyCalcUi(QMainWindow):
"""PyCalc's View (GUI)."""
def __init__(self):
"""View initializer."""
super().__init__()
# Set some main window's properties
self.setWindowTitle('PyCalc')
self.setFixedSize(800, 600)
# Set the central widget and the genral layout
self.generalLayout = QVBoxLayout()
self._centralWidget = QWidget(self)
self.setCentralWidget(self._centralWidget)
# Create the display and the buttons
self._createDisplay()
self._createButtons()
def _createDisplay(self):
"""Create the display"""
# Create the display widget
self.display = QLineEdit()
# Set some display's properties
self.display.setFixedHeight(35)
self.display.setAlignment(Qt.AlignRight)
self.display.setReadOnly(True)
# Add the display to the general layout
self.generalLayout.adddWidget(self.display)
def _createButtons(self):
"""Create the buttons"""
self.buttons = {}
buttonsLayout = QGridLAyout()
# Button text | position on the QGridLayout
buttons = {'7': (0,0),
'8': (0,1),
'9': (0,2),
'/': (0,3),
'C': (0,4),
'4': (1,0),
'5': (1,1),
'6': (1,2),
'*': (1,3),
'(': (1,4),
'1': (2,0),
'2': (2,1),
'3': (2,2),
'-': (2,3),
')': (2,4),
'0': (3,0),
'00': (3,1),
'.': (3,2),
'+': (3,3),
'=': (3,4),
}
# Create the buttons and add them to the grid layout
for btnText, pos in buttons.items():
self.buttons[btnText] = QPushButton(btnText)
self.buttons[btnText].setFixedSize(40, 40)
buttonsLayout.addWidget(self.buttons[btnText], pos[0], pos[1])
# Add buttonsLayout to the general layout
self.generalLayout.addLayout(buttonsLayout)
class PyCalcUI(QMainWindow):
# Snip
def setDisplayText(self, text):
"""Set display's text. """
self.display.setText(text)
self.display.setFocus()
def displayText(self):
"""Get display's text."""
return self.display.text()
def clearDisplay(self):
"""Clear the display."""
self.setDisplayText('')
class PyCalcCtrl:
"""PyCalc Controller class."""
def __init__(self, view):
"""Controller initiallizer."""
self._view = view
# Connect signals and slots
self._connectSignals()
def _buildExpression(self, sub_exp):
"""Build expression."""
expression = self._view.displayText() + sub_exp
self._view.setDisplayText(expression)
def _connectSignals(self):
"""Connect signal and slots."""
for btnText, btn in self._view.buttons.items():
if btnText not in {'=', 'C'}:
btn.clicked.connect(partial(self._buildExpression, btnText))
self._view.buttons['C'].clicked.connect(self._view.clearDisplay)
# Client code
def main():
"""Main function."""
# Create an instance of QApplication
pycalc = QApplication(sys.argv)
# Show the calculator's GUI
view = PyCalcUi()
view.show()
# Create instance of the model and the controller
PyCalcCtrl(view = view)
# Execute the calculator's main loop
sys.exit(pycalc.exec_())
if __name__ == '__main__':
main()I took the code from this website:https://realpython.com/python-pyqt-gui-calculator/
I am trying for hours to fix the problem without any success. Do you see the error??
