i'm trying to learn Python and QT4. I like pizza, so I realized a program to calculate the amount of ingredients, based on the number of pizzas I want to make.
The program is the following and do its job.
class Pizza:
# MEMBRI
farina=0
acqua=0
lievito=0
sale=0
def stampaIngredientiPizza(self, f, a, l, s):
self.stampaFarina=f
self.stampaAcqua=a
self.stampaLievito=l
self.stampaSale=s
print("Farina 00 (W240): ", self.stampaFarina, "gr")
print("Acqua: ", self.stampaAcqua, "gr")
print("Lievito di birra: ", self.stampaLievito, "gr")
print("Sale: ", self.stampaSale, "gr")
class Romana(Pizza):
# MEMBRI
olio=0
semola=0
class Napoletana(Pizza):
# MEMBRI
strutto=0
manitoba=0
# INIZIALIZZAZIONE OGGETTI
#
# TONDA ROMANA
#
tondaRomana=Romana()
tondaRomana.farina=80
tondaRomana.semola=20
tondaRomana.acqua=57
tondaRomana.lievito=0.171
tondaRomana.sale=2.85
tondaRomana.olio=2.85
#
# TEGLIA ROMANA
#
# TUTTI I VALORI VANNO MOLTIPLICATI X 1,5
#
#
# TONDA NAPOLETANA
#
tondaNapoletana=Napoletana()
tondaNapoletana.farina=72
tondaNapoletana.manitoba=48
tondaNapoletana.acqua=72
tondaNapoletana.lievito=0.216
tondaNapoletana.sale=3.6
tondaNapoletana.strutto=7.2
#
# TEGLIA NAPOLETANA
#
# TUTTI I VALORI VANNO MOLTIPLICATI X 1,5
#
romaNapoli=-1 # Romana o Napoleta
tondaTeglia=-1 # Tonda o Teglia
print("\t\t\tPIZZA ROMANA o NAPOLETANA\n\n")
while(romaNapoli!=0):
print("1) Pizza Romana")
print("2) Pizza Napoletana")
print("0) Uscita")
romaNapoli=int(input("\nSelezione (0, 1 ,2)? "))
if(romaNapoli==1): ##### PIZZA ROMANA #####
while(tondaTeglia!=0):
print()
print("1) Tonda 30cm")
print("2) Teglia 40x35cm")
print("0) Uscita")
tondaTeglia=int(input("\nSelezione (0, 1 ,2)? ")) ##### TONDA O TEGLIA #####
if(tondaTeglia==1): # TONDA
quantePizze=eval(input("\nQuante pizze tonde da 30cm vuoi preparare? "))
print()
totaleImpasto=(tondaRomana.farina*quantePizze+tondaRomana.semola*quantePizze+
tondaRomana.acqua*quantePizze+tondaRomana.olio*quantePizze+tondaRomana.sale*quantePizze)
if(quantePizze==1):
print("Per preparare", quantePizze, "pizza Romana in teglia tonda, ti occorrono:")
print()
else:
print("Per preparare", quantePizze, "pizze Romane in teglia tonda, ti occorrono:")
print()
print("Farina di semola rimacinata: ", tondaRomana.semola*quantePizze, "gr")
tondaRomana.stampaIngredientiPizza(tondaRomana.farina*quantePizze, tondaRomana.acqua*quantePizze, tondaRomana.lievito*quantePizze, tondaRomana.sale*quantePizze)
print("Olio: ", tondaRomana.olio*quantePizze, "gr")
print()
print("Totale impasto: ", totaleImpasto, "gr\n")
premiUnTasto=input("Premi INVIO per continuare")
print()
if(tondaTeglia==2): # TEGLIA
quantePizze=eval(input("\nQuante pizze in teglia 40x35cm vuoi preparare? "))
print()
totaleImpasto=(tondaRomana.farina*1.5*quantePizze+tondaRomana.semola*1.5*quantePizze+
tondaRomana.acqua*1.5*quantePizze+tondaRomana.olio*1.5*quantePizze+tondaRomana.sale*1.5*quantePizze)
if(quantePizze==1):
print("Per preparare", quantePizze, "pizza Romana in teglia rettangolare, ti occorrono:")
print()
else:
print("Per preparare", quantePizze, "pizze Romane in teglia rettangolare, ti occorrono:")
print()
print("Farina di semola rimacinata: ", tondaRomana.semola*1.5*quantePizze, "gr")
tondaRomana.stampaIngredientiPizza(tondaRomana.farina*1.5*quantePizze, tondaRomana.acqua*1.5*quantePizze, tondaRomana.lievito*1.5*quantePizze,
tondaRomana.sale*1.5*quantePizze)
print("Olio: ", tondaRomana.olio*1.5*quantePizze, "gr")
print()
print("Totale impasto: ", totaleImpasto, "gr\n")
premiUnTasto=input("Premi INVIO per continuare")
print()
if(romaNapoli==2): ##### PIZZA NAPOLETANA #####
print()
print("1) Tonda 30cm")
print("2) Teglia 40x35cm")
print("0) Uscita")
tondaTeglia=int(input("\nSelezione (0,1 ,2)? ")) ##### TONDA O TEGLIA #####
if(tondaTeglia==0):
break
if(tondaTeglia==1): # TONDA
quantePizze=eval(input("\nQuante pizze tonde da 30cm vuoi preparare? "))
print()
totaleImpasto=(tondaNapoletana.farina*quantePizze+tondaNapoletana.manitoba*quantePizze+
tondaNapoletana.acqua*quantePizze+tondaNapoletana.strutto*quantePizze+
tondaNapoletana.sale*quantePizze)
if(quantePizze==1):
print("Per preparare", quantePizze, "pizza Napoletana in teglia tonda, ti occorrono:")
print()
else:
print("Per preparare ", quantePizze, "pizze Napoletane in teglia tonda, ti occorrono:")
print()
print("Farina manitoba : ", tondaNapoletana.manitoba*quantePizze, "gr")
tondaNapoletana.stampaIngredientiPizza(tondaNapoletana.farina*quantePizze, tondaNapoletana.acqua*quantePizze, tondaNapoletana.lievito*quantePizze,
tondaNapoletana.sale*quantePizze)
print("Strutto: ", tondaNapoletana.strutto*quantePizze, "gr")
print()
print("Totale impasto: ", totaleImpasto, "gr\n")
premiUnTasto=input("Premi INVIO per continuare")
print()
if(tondaTeglia==2): # TEGLIA
quantePizze=eval(input("\nQuante pizze in teglia 40x35cm vuoi preparare? "))
print()
totaleImpasto=(tondaNapoletana.farina*1.5*quantePizze+tondaNapoletana.manitoba*1.5*quantePizze+
tondaNapoletana.acqua*1.5*quantePizze+tondaNapoletana.strutto*1.5*quantePizze+
tondaNapoletana.sale*1.5*quantePizze)
if(quantePizze==1):
print("Per preparare", quantePizze, "pizza Napoletana in teglia rettangolare, ti occorrono:")
print()
else:
print("Per preparare ", quantePizze, "pizze Napoletane in teglia rettangolare, ti occorrono:")
print()
print("Farina manitoba : ", tondaNapoletana.manitoba*1.5*quantePizze, "gr")
tondaNapoletana.stampaIngredientiPizza(tondaNapoletana.farina*1.5*quantePizze, tondaNapoletana.acqua*1.5*quantePizze, tondaNapoletana.lievito*1.5*quantePizze,
tondaNapoletana.sale*1.5*quantePizze)
print("Strutto: ", tondaNapoletana.strutto*1.5*quantePizze, "gr")
print()
print("Totale impasto: ", totaleImpasto, "gr\n")
premiUnTasto=input("Premi INVIO per continuare")
print()
First there is a selection based on what kind of pizza to make: Romana or Napoletana then the shape: Tonda(round) or Rettangolare(rectangular) then the q.ty and there is a printout of the ingredients.
there are 4 basic ingredients for pizza: flour, yeast, water, salt. To make Romana must add oil and semolina to the 4 basics. To make Napoletana must add lard and manitoba to the 4 basics
so there is a Base Class Pizza and two Derived Classes Romana and Napoletana
Now I want to give a graphical interface to the program. I wrote this code but have problems because of my lack of knowledge
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(750, 250)
self.setWindowTitle("CALCOLATORE DOSI IMPASTO PER PIZZA ROMANA O NAPOLETANA")
#self.setWindowIcon(QtGui.QIcon('pizza.jpg'))
self.schermataRomaNapoli()
# SCHERMATA SELEZIONE TIPO IMPASTO DA REALIZZARE: ROMANA O NAPOLETANA
def schermataRomaNapoli(self):
cWidget = QtGui.QWidget(self)
grid = QtGui.QGridLayout(cWidget)
vBox = QtGui.QVBoxLayout()
etichetta1 = QtGui.QLabel("Seleziona il tipo di pizza che vuoi preparare:", cWidget)
etichetta1.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
radio1 = QtGui.QRadioButton("Pizza Romana", cWidget)
radio1.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
radio1.clicked.connect(self.romana)
radio2 = QtGui.QRadioButton("Pizza Napoletana", cWidget)
radio2.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
radio2.clicked.connect(self.napoletana)
radio3 = QtGui.QRadioButton("Uscita", cWidget)
radio3.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
radio3.clicked.connect(self.close)
vBox.addWidget(etichetta1)
vBox.addWidget(radio1)
vBox.addWidget(radio2)
vBox.addWidget(radio3)
grid.addLayout(vBox, 1, 0)
cWidget.setLayout(grid)
self.setCentralWidget(cWidget)
# PIZZA ROMANA
def romana(self):
global romaNapoli
romaNapoli=" Romana "
olio=0
semola=0
self.schermataTondaTeglia()
# PIZZA NAPOLETANA
def napoletana(self):
global romaNapoli
romaNapoli=" Napoletana "
strutto=0
manitoba=0
self.schermataTondaTeglia()
# SCHERMATA SELEZIONE FORMATO TEGLIA: TONDA 30cm O RETTANGOLARE 40x35cm
def schermataTondaTeglia(self):
cWidget = QtGui.QWidget(self)
grid = QtGui.QGridLayout(cWidget)
vBox = QtGui.QVBoxLayout()
etichetta1 = QtGui.QLabel("Seleziona il tipo di formato che vuoi preparare:", cWidget)
etichetta1.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
radio1 = QtGui.QRadioButton("Tonda 30cm", cWidget)
radio1.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
radio1.clicked.connect(self.schermataQuanteTonde)
radio2 = QtGui.QRadioButton("Teglia 40x35cm", cWidget)
radio2.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
radio2.clicked.connect(self.schermataQuanteRettangolari)
radio3 = QtGui.QRadioButton("Indietro", cWidget)
radio3.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
radio3.clicked.connect(self.schermataRomaNapoli)
vBox.addWidget(etichetta1)
vBox.addWidget(radio1)
vBox.addWidget(radio2)
vBox.addWidget(radio3)
grid.addLayout(vBox, 1, 0)
cWidget.setLayout(grid)
self.setCentralWidget(cWidget)
# SCHERMATA SELEZIONE QUANTE PIZZE TONDE DA REALIZZARE
def schermataQuanteTonde(self):
global quantePizze, pizzaPizze, romaNapoli, tondaRettangolare
quantePizze = QtGui.QInputDialog.getInt(self, "CALCOLATORE DOSI IMPASTO PER PIZZA ROMANA O NAPOLETANA", "Quante pizze tonde da 30cm vuoi preparare?", 1)
tondaRettangolare=" tonda"
if(quantePizze[0]==1):
pizzaPizze=" pizza"
# SE LE PIZZE SONO PIU' DI UNA, LE PAROLE PIZZA, ROMANA E NAPOLETANA DIVENTANO PLURALI: PIZZE, ROMANE, NAPOLETANE
if(quantePizze[0]!=1):
pizzaPizze=" pizze"
if(romaNapoli==" Romana "):
romaNapoli=" Romane "
else:
romaNapoli=" Napoletane "
if(romaNapoli==" Romana "):
Romana() # VA SULLA CLASSE ROMANA(PIZZA)
if(romaNapoli==" Napoletana "):
Napoletana() # VA SULLA CLASSE NAPOLETANA(PIZZA)
# SCHERMATA SELEZIONE QUANTE PIZZE RETTANGOLARI DA REALIZZARE
def schermataQuanteRettangolari(self):
global quantePizze, pizzaPizze, romaNapoli, tondaRettangolare
quantePizze = QtGui.QInputDialog.getInt(self, "CALCOLATORE DOSI IMPASTO PER PIZZA ROMANA O NAPOLETANA", "Quante pizze rettangolari da 40x35cm vuoi preparare?", 1)
tondaRettangolare=" rettangolare"
if(quantePizze[0]==1):
pizzaPizze=" pizza"
# SE LE PIZZE SONO PIU' DI UNA, LE PAROLE PIZZA, ROMANA E NAPOLETANA DIVENTANO PLURALI: PIZZE, ROMANE, NAPOLETANE
if(quantePizze[0]!=1):
pizzaPizze=" pizze"
if(romaNapoli==" Napoletana "):
romaNapoli=" Napoletane "
else:
romaNapoli=" Romane "
if(romaNapoli==" Romana "):
Romana() # VA SULLA CLASSE ROMANA(PIZZA)
if(romaNapoli==" Napoletana "):
Napoletana() # VA SULLA CLASSE NAPOLETANA(PIZZA)
class Pizza(QtGui.QMainWindow):
global farina, acqua, lievito, sale
# INGREDIENTI PIZZA BASE
farina=0
acqua=0
lievito=0
sale=0
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(750, 250)
self.setWindowTitle("CALCOLATORE DOSI IMPASTO PER PIZZA ROMANA O NAPOLETANA")
self.setWindowIcon(QtGui.QIcon('pizza.jpg'))
self.stampaIngredientiPizza(farina, acqua, lievito, sale)
# STAMPA INGREDIENTI BASE
def stampaIngredientiPizza(self, f, a, l, s):
stampaFarina=f
stampaAcqua=a
stampaLievito=l
stampaSale=s
# DA TOGLIERE
quantePizze=['2']
pizzaPizze=" pizze"
romaNapoli=" Romane "
tondaRettangolare=" tonda"
# DA TOGLIERE
cWidget = QtGui.QWidget()
grid = QtGui.QGridLayout(cWidget)
vBox = QtGui.QVBoxLayout()
etichetta11 = QtGui.QLabel("Per preparare " + str(quantePizze[0])+ pizzaPizze + romaNapoli + "in teglia" + tondaRettangolare + ", ti occorrono:\n", cWidget)
etichetta11.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
etichetta1 = QtGui.QLabel("Farina 00 (W240): " + str(stampaFarina) + "gr", cWidget)
etichetta1.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
etichetta2 = QtGui.QLabel("Acqua: " + str(stampaAcqua) + "gr", cWidget)
etichetta2.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
etichetta3 = QtGui.QLabel("Lievito di birra: " + str(stampaLievito) + "gr", cWidget)
etichetta3.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
etichetta4 = QtGui.QLabel("Sale: " + str(stampaSale) + "gr", cWidget)
etichetta4.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
vBox.addWidget(etichetta11)
vBox.addWidget(etichetta1)
vBox.addWidget(etichetta2)
vBox.addWidget(etichetta3)
vBox.addWidget(etichetta4)
grid.addLayout(vBox, 1, 0)
cWidget.setLayout(grid)
self.setCentralWidget(cWidget)
# IMPASTO TONDA ROMANA
class Romana(Pizza):
tondaRettangolare=" tonda" # DA TOGLIERE
if(tondaRettangolare==" tonda"):
def stampaIngredientiPizza(self, f, a, l, s):
farina=80
semola=20
acqua=57
lievito=0.171
sale=2.85
olio=2.85
super(Romana, self).stampaIngredientiPizza(farina, acqua, lievito, sale)
app=QtGui.QApplication(sys.argv)
main=MainWindow()
main.show()
sys.exit(app.exec_())
The first part of the code (MainWindow) works. If I remove the 3 ''' for Pizza Class the program don't work.
It should print in the window, the 4 basic ingredients (stampaIngredientiPizza method). It should add in the same window, the 2 more ingredients (tondaRomana method) depending on the kind of pizza to make.
Determined that the mainWindow Class work, I would like your help to run the Class Pizza and then put everything together. I edited the below code. Now I have this error: NameError: name 'stampaIngredientiPizza' is not defined
class Pizza(QtGui.QMainWindow):
global farina, acqua, lievito, sale
# INGREDIENTI PIZZA BASE
farina=0
acqua=0
lievito=0
sale=0
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(750, 250)
self.setWindowTitle("CALCOLATORE DOSI IMPASTO PER PIZZA ROMANA O NAPOLETANA")
self.setWindowIcon(QtGui.QIcon('pizza.jpg'))
self.stampaIngredientiPizza(farina, acqua, lievito, sale)
# STAMPA INGREDIENTI BASE
def stampaIngredientiPizza(self, f, a, l, s):
stampaFarina=f
stampaAcqua=a
stampaLievito=l
stampaSale=s
# DA TOGLIERE
quantePizze=['2']
pizzaPizze=" pizze"
romaNapoli=" Romane "
tondaRettangolare=" tonda"
# DA TOGLIERE
cWidget = QtGui.QWidget()
grid = QtGui.QGridLayout(cWidget)
vBox = QtGui.QVBoxLayout()
etichetta11 = QtGui.QLabel("Per preparare " + str(quantePizze[0])+ pizzaPizze + romaNapoli + "in teglia" + tondaRettangolare + ", ti occorrono:\n", cWidget)
etichetta11.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
etichetta1 = QtGui.QLabel("Farina 00 (W240): " + str(stampaFarina) + "gr", cWidget)
etichetta1.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
etichetta2 = QtGui.QLabel("Acqua: " + str(stampaAcqua) + "gr", cWidget)
etichetta2.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
etichetta3 = QtGui.QLabel("Lievito di birra: " + str(stampaLievito) + "gr", cWidget)
etichetta3.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
etichetta4 = QtGui.QLabel("Sale: " + str(stampaSale) + "gr", cWidget)
etichetta4.setFont(QtGui.QFont("Times", 20, QtGui.QFont.Bold))
vBox.addWidget(etichetta11)
vBox.addWidget(etichetta1)
vBox.addWidget(etichetta2)
vBox.addWidget(etichetta3)
vBox.addWidget(etichetta4)
grid.addLayout(vBox, 1, 0)
cWidget.setLayout(grid)
self.setCentralWidget(cWidget)
# IMPASTO TONDA ROMANA
class Romana(Pizza):
tondaRettangolare=" tonda" # DA TOGLIERE
if(tondaRettangolare==" tonda"):
def stampaIngredientiPizza(self, f, a, l, s):
farina=80
semola=20
acqua=57
lievito=0.171
sale=2.85
olio=2.85
super(Romana, self).stampaIngredientiPizza(farina, acqua, lievito, sale)
app=QtGui.QApplication(sys.argv)
pizza=Romana()
pizza.show()
sys.exit(app.exec_())