Class pythonqt4类&;QTGui窗口
我正在努力学习Python和QT4。我喜欢比萨饼,所以我实现了一个程序,根据我想做的比萨饼的数量来计算配料的数量 程序如下所示,并完成其工作Class pythonqt4类&;QTGui窗口,class,methods,pyqt4,python-3.4,qmainwindow,Class,Methods,Pyqt4,Python 3.4,Qmainwindow,我正在努力学习Python和QT4。我喜欢比萨饼,所以我实现了一个程序,根据我想做的比萨饼的数量来计算配料的数量 程序如下所示,并完成其工作 class Pizza: # MEMBRI farina=0 acqua=0 lievito=0 sale=0 def stampaIngredientiPizza(self, f, a, l, s): self.stampaFarina=f self.stampaAcqua
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()
首先,有一个选择是基于什么样的比萨饼制作:罗马或纳波列塔纳
然后是形状:Tonda(圆形)或Rettangolare(矩形)
然后是问题
还有一份配料的打印件
比萨饼有4种基本配料:面粉、酵母、水、盐。
要想制作罗曼娜,必须在4种基本成分中添加油脂和粗面粉。
要制作Napoletana,必须在4个基本要素中添加猪油和马尼托巴
所以有一种基本的比萨饼
以及两个派生类Romana和Napoletana
现在我想给这个程序一个图形界面。
我写了这段代码,但由于缺乏知识而遇到问题
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_())
代码的第一部分(主窗口)起作用。
如果我删除比萨饼类的3'',程序将无法运行
它应该在窗口中打印出4种基本成分(stampaIngredientiPizza法)。
它应该在同一个窗口中添加2种以上的配料(tondaRomana法),这取决于要制作的比萨饼的种类
确定了主窗口类的工作,我希望你的帮助运行类比萨饼,然后把一切都放在一起。我编辑了下面的代码。现在我有一个错误:NameError:name'stampaIngredientiPizza'没有定义
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_())
你不应该使用globals。在制作GUI时,Globals非常糟糕。您可能需要某个项目的多个项目,但您依赖于全局项目的值。当您想要操纵实例变量时,您也在操纵类变量。您应该在主窗口中实例化变量 例如:
class Pizza(object):
'''Create a pizza'''
def __init__(self):
self.farina=0
self.acqua=0
self.lievito=0
self.sale=0
self.olio=0
self.semola=0
self.strutto=0
self.manitoba=0
self.set_default_ingredients()
# end Constructor
@classmethod
def default_ingredients(cls):
'''Return the default ingredients for a pizza.'''
return {'farina':0, 'acqua':0, 'lievito':0, 'sale':0}
def set_default_ingredients(self):
'''Set the default ingredients.'''
self.farina=0
self.acqua=0
self.lievito=0
self.sale=0
self.olio=0
self.semola=0
self.strutto=0
self.manitoba=0
# end set_default_ingredients
def bake(self):
'''Bake the pizza.'''
pass # Do something to bake the pizza.
# end class Pizza
class Romana(Pizza):
'''Create a special Romana Pizza.'''
@classmethod
def default_ingredients(cls):
'''Return the default ingredients for a Romana Pizza.'''
return {'farina':80, 'semola':20, 'acqua':57, 'lievito':0.171, 'sale':2.85, 'olio':2.85}
def set_default_ingredients(self):
'''Set the default ingredients for a Romana Pizza.'''
self.farina=80
self.semola=20
self.acqua=57
self.lievito=0.171
self.sale=2.85
self.olio=2.85
class Napoletana(Pizza):
'''Create a special Napoletana Pizza.'''
@classmethod
def default_ingredients(cls):
'''Return the default ingredients for a Romana Pizza.'''
return {'farina':72, 'manitoba':48, 'acqua':72, 'lievito':0.216, 'sale':3.6, 'strutto':7.2}
def set_default_ingredients(self):
'''Set the default ingredients for a Romana Pizza.'''
self.farina=72
self.manitoba=48
self.acqua=72
self.lievito=0.216
self.sale=3.6
self.strutto=7.2
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super().__init__()
self.main_widg = QtGui.QWidget()
self.main_layout = QtGui.QFormLayout()
self.main_widg.setLayout(self.main_layout)
self.setCentralWidget(self.main_widg)
self.current_pizza = Pizza()
self.pizza_type = QtGui.QComboBox()
self.pizza_type.addItems(['Pizza', 'Romana', 'Napoletana'])
self.pizza_type.currentIndexChanged.connect(self.select_pizza)
# Ingredients
self.farina = QtGui.QLineEdit('0')
self.farina.textChanged.connect(self.set_farina)
self.acqua = QtGui.QLineEdit('0')
self.acqua.textChanged.connect(self.set_acqua)
self.lievito = QtGui.QLineEdit('0')
self.lievito.textChanged.connect(self.set_lievito)
self.sale = QtGui.QLineEdit('0')
self.sale.textChanged.connect(self.set_sale)
self.olio = QtGui.QLineEdit('0')
self.olio.textChanged.connect(self.set_olio)
self.semola = QtGui.QLineEdit('0')
self.semola.textChanged.connect(self.set_semola)
self.strutto = QtGui.QLineEdit('0')
self.strutto.textChanged.connect(self.set_strutto)
self.manitoba = QtGui.QLineEdit('0')
self.manitoba.textChanged.connect(self.set_manitoba)
# Actions
self.bake_btn = QtGui.QPushButton("Bake")
self.bake_btn.clicked.connect(self.bake)
# Layout
self.main_layout.addRow('Pizza Type', self.pizza_type)
self.main_layout.addRow('farina', self.farina)
self.main_layout.addRow('acqua', self.acqua)
self.main_layout.addRow('lievito', self.lievito)
self.main_layout.addRow('olio', self.olio)
self.main_layout.addRow('semola', self.semola)
self.main_layout.addRow('strutto', self.strutto)
self.main_layout.addRow('manitoba', self.manitoba)
self.main_layout.addRow(self.bake_btn)
# end __init__
def select_pizza(self, idx):
if self.pizza_type.currentText() == 'Pizza':
self.current_pizza = Pizza()
elif self.pizza_type.currentText() == 'Romana':
self.current_pizza = Romana()
else:
self.current_pizza = Napoletana()
self.set_values()
# end select_pizza
def set_values(self):
'''Set the values from the current pizza.'''
self.farina.setText(str(self.current_pizza.farina))
self.acqua.setText(str(self.current_pizza.acqua))
self.lievito.setText(str(self.current_pizza.lievito))
self.sale.setText(str(self.current_pizza.sale))
self.olio.setText(str(self.current_pizza.olio))
self.semola.setText(str(self.current_pizza.semola))
self.strutto.setText(str(self.current_pizza.strutto))
self.manitoba.setText(str(self.current_pizza.manitoba))
def set_farina(self, val):
self.current_pizza.farina = val
def set_acqua(self, val):
self.current_pizza.acqua = val
def set_lievito(self, val):
self.current_pizza.lievito = val
def set_sale(self, val):
self.current_pizza.sale = val
def set_olio(self, val):
self.current_pizza.olio = val
def set_semola(self, val):
self.current_pizza.semola = val
def set_strutto(self, val):
self.current_pizza.strutto = val
def set_manitoba(self, val):
self.current_pizza.manitoba = val
def bake(self):
self.current_pizza.bake()
# end class MainWindow
if __name__ == "__main__":
import sys
QtGui.QApplication([])
window = MainWindow()
window.show()
sys.exit(QtGui.qApp.exec_())
此用户界面的要点是与当前值交互。通过更改比萨饼类型,可以更改显示的默认值。更改GUI中的值会更改正在使用的对象。该实例包含在主窗口中,因此您可以调用MainWindow()两次,并拥有两个相互独立的工作主窗口
在这个例子中,我还包括了基本等级比萨饼中所有不同的配料和配料。这使得任何人都可以用你现有的任何配料做比萨饼。如果选择Romana等特色比萨饼,则用户界面将使用该比萨饼类型填充值,用户可以按照自己的方式进行调整。什么“不起作用”?您能否尝试缩短代码,使Romana(Pizza)类中有一个?tondaRettangolare?它虽然是一个全局变量,但未定义。Romana(披萨)班的stampaIngredientiPizza(farina、acqua、lievito、sale)不打印输出。在评论Pizza类及其子类时,主窗口一直工作,直到配料打印输出确定主窗口类工作为止,我希望您帮助运行Pizza类,然后将所有内容组合在一起。我编辑了下面的代码。现在我有一个错误:NameError:name'stampaIngredientiPizza'没有定义我做了一个MCVE。最后一个代码只有两个类。现在我有一个错误:NameError:name'stampaIngredientiPizza'没有定义。我无法从Romana(Pizza)类启动stampaIngredientiPizza方法最后一个代码修改并使用超类工作。现在的问题是如何从主窗口调用Romana类(比萨饼),非常感谢。现在我有很多东西要学习,但首先,如果我运行程序,没有任何附加(我还包括:import sys和从PyQt4导入QtGui,顶部的QtCore行),我只是给了你一个如何编写代码的示例。该程序不应该做任何事情。我的意思是[link](www.mediafire.com/view/akdb9gzodhh48st/pizza.png)您是否将其作为主程序运行?语句“if name==“main”:”使代码仅在主文件时运行。通过这种方式,您可以在另一个项目上使用“导入pizza”并从另一个文件或项目调用“pizza.Romana()”。主窗口是类。您必须有一个应用程序来运行GUI。即使您“导入比萨饼”并调用“w=pizza.MainWindow()”“w.show()”。您仍然必须调用“app=QtGui.QApplication([])”和“sys.exit(app.exec_389;())”。