Python Qt4类& QTGui Windows

编程入门 行业动态 更新时间:2024-10-23 07:39:18
本文介绍了Python Qt4类& QTGui Windows的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想学习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 = 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 .stampaSale,gr) class Romana(Pizza):#MEMBRI olio = 0 semola = 0 b $ b 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\\\\\\) while(romaNapoli!= 0): print(1)Pizza Romana) print(2)Pizza Napoletana) print(0)Uscita) romaNapoli = int(input(\\\Selezione(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(\\\Selezione(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:, tianRomana.olio * quantePizze,gr) print() print(Totale impasto:,totaleImpasto,gr\\\) premiUnTasto = input继续) print() if(tondaTeglia == 2):#TEGLIA quantePizze = eval(input(\\\Quante pizze in teglia 40x35cm vuoi准备? )) print() totaleImpasto =(tondaRomana.farina * 1.5 * quantePizze + tondaRomana.semola * 1.5 * quantePizze + tondaRomana.acqua * 1.5 * quantePizze + tondaRomana。 olia * 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(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\\\) premiUnTasto = input $ b print() if(romaNapoli == 2):##### PIZZA NAPOLETANA ##### print() print(1)Tonda 30cm) print(2)Teglia 40x35cm) print(0)Uscita) tondaTeglia = int \\\Selezione(0,1,2)? ))##### TONDA O TEGLIA ##### if(tondaTeglia == 0): break if(tondaTeglia == 1):# TONDA quantePizze = eval(input(\\\Quante 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\\\) premiUnTasto = input b $ b print() if(tondaTeglia == 2):#TEGLIA quantePizze = eval(input(\\\Quante 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, tegia 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\\\) premiUnTasto = input b $ b print()

首先有一个选择根据什么样的比萨饼:Romana或Napoletana 然后形状:Tonda(圆形)或Rettangolare(矩形)然后q.ty ,并有一个打印输出的成分。

有比萨的4种基本成分:面粉,酵母,水,盐。 要使Romana必须添加油和粗粉到4基本。 要让Napoletana必须添加lard和manitoba到4基本的

,所以有一个基类披萨和两个派生类Romana和Napoletana

现在我想给程序一个图形界面。 我写了这段代码,但因为我缺乏知识而有问题。

import sys 从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 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 radio1 = QtGui.QRadioButton(Pizza),这是一个简单的例子。 Romana,cWidget) radio1.setFont(QtGui.QFont(Times,20,QtGui.QFont.Bold)) radio1.clicked.connect(self.romana) radio2 = QbGui.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): 全球romaNapoli romaNapoli =罗马纳 olio = 0 semola = 0 .schermataTondaTeglia() #PIZZA NAPOLETANA def napoletana(self): 全球romaNapoli romaNapoli =Napoletana strutto = 0 manitoba = 0 self.schermataTondaTeglia() #SCHERMATA SELEZIONE FORMATO TEGLIA:TONDA 30cm O RETTANGOLARE 40x35cm def schermataTondaTeglia 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 .bicked.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): 全球quantePizze,pizzaPizze,romaNapoli,tondaRettangolare quantePizze = QtGui.QInputDialog.getInt(self,CALCOLATORE DOSI IMPASTO PER PIZZA ROMANA O NAPOLETANA,Quanta 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 b $ b全球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 CLASSE NAPOLETANA(PIZZA) 类Pizza(QtGui.QMainWindow): 全球farina,acqua,lievito,销售#INGREDIENTI PIZZA BASE farina = 0 acqua = 0 lievito = 0 sale = 0 def __init __(self): QtGui self.setWindowTitle(CALCOLATORE DOSI IMPASTO PER PIZZA ROMANA O NAPOLETANA) self.setWindowIcon() $ b self.resize(750,250) 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:\\\,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_())

$ b b

代码的第一部分(MainWindow)工作。 如果我删除了3'''比萨饼类程序不工作。

它应该打印在窗口中,4个基本成分(stampaIngredientiPizza方法)。 它应该添加在同一个窗口,另外2种配料(tondaRomana方法),取决于比萨饼的种类。

确定mainWindow类工作,我想你的帮助,运行类披萨,然后把所有的一切。我编辑了下面的代码。现在我有这个错误: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 (,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 stampaIngredienti Pizza ,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_())

解决方案

您不应该使用全局变量。当制作GUI时,全局变量是非常糟糕的。你可能想要多个项目的东西,但你依赖于一个全局的价值。当你想要处理实例变量时,你也可以操作类变量。你应该在MainWindow中实例化变量。

示例:

b'''创建一个比萨饼''' 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构造函数 @classmethod def default_ingredients(cls):'''返回比萨的默认成分。'' return {'farina':0,'acqua':0,'lievito':0,'sale':0} def set_default_ingredients $ b'''设置默认成分。''' 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):'''烤比萨饼''' pass#做一些事情来烤比萨饼。 #end class Pizza class Romana(Pizza):'''创建一个特殊的Romana Pizza。'' @classmethod def default_ingredients(cls):'''返回Romana Pizza的默认成分。'' return {'farina':80,'semola':20,'acqua':57 ,'lievito':0.171,'sale':2.85,'olio':2.85} def set_default_ingredients(self):'''设置Romana比萨饼的默认成分。 '' self.farina = 80 self.semola = 20 self.acqua = 57 self.lievito = 0.171 self.sale = 2.85 self.olio = 2.85 类Napoletana(比萨):'''创建一个特别的Napoletana比萨饼。'' @classmethod def default_ingredients(cls):'''返回Romana Pizza的默认成分。'' return {'farina':72,'manitoba':48,'acqua':72, lievito':0.216,'sale':3.6,'strutto':7.2} def set_default_ingredients(self):'''设置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) #成分 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 $ b self.set_values()#end select_pizza def set_values(self):'''设置当前比萨饼的值''' 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.manitoba)) 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.current_pizza.strutto = val def set_manitoba(self,val): self.current_pizza.manitoba = val def bake self.current_pizza.bake()#end class MainWindow 如果__name__ ==__main__: import sys QtGui .QApplication([]) window = MainWindow() window.show() sys.exit(QtGui.qApp.exec_())

此用户界面的要点是与current_pizza值交互。通过更改披萨类型,您可以更改显示的默认值。更改GUI中的值会更改您正在使用的对象。实例包含在主窗口中,因此您可以调用MainWindow()两次,并有两个彼此独立的工作主窗口。

在此示例中,包括所有不同的浇头和配料在基础类Pizza。这使得任何人都可以做一个比萨饼与任何成分,你有可用。如果您选择了Romana等特色比萨,那么用户界面将使用该比萨饼类型填充值,用户可以按照自己想要的方式进行调整。

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_())

解决方案

You shouldn't have to use globals. Globals are really bad when making GUI's. You could want multiple items of something, but you are dependent on the value from a global. You are also manipulating class variables when you want to manipulate instance variables. You should instantiate variables within your MainWindow.

Example:

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_())

The main point of this user interface is to interact with the current_pizza values. By changing the pizza type you change the default values that are displayed. Changing the values in the GUI changes the object you are working with. The instance is contained in the main window, so you could call MainWindow() twice and have two working main windows that are independent of each other.

In this example I also included all of the different toppings and ingredients in the base class Pizza. This makes it so any one can make a Pizza with any ingredient that you have available. If you select a specialty pizza like Romana then the user interface will populate the values with that pizza type, and the user can adjust it the way they want.

更多推荐

Python Qt4类& QTGui Windows

本文发布于:2023-10-09 18:30:11,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Python   amp   Windows   QTGui

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!