我目前对我的餐厅有一个工作菜单测试,它读取检查按钮接收到的输入,将它们与正确答案进行比较,然后显示一个好的工作消息框或一个继续工作的消息框。我还设置了它,如果他们没有正确回答问题,它会打印他们回答的内容,然后是正确答案。而不是消息框并简单地打印他们做错了什么我想要一个最终结果屏幕要么有很好的工作(或类似的东西)消息,要么上面印有错误与正确的答案。这是我的代码,向您展示到目前为止我是如何实现所有内容的,就像我说的一切正常,我只是想找出一种方法让它更美观,但还没有找到一种方法来做到这一点。
from tkinter import *
import tkinter.messagebox as tkMessageBox
class GUI(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
self.count = -1
self.answers = {'nft':[], 'nckt':[]}
self.menuItems = {'nft': ['Cheese', 'Cabbage', 'Corn', 'Blackened Fish', 'Salsa'],
'nckt': ['Lettuce', 'Cheese', 'Corn', 'Blackened Chicken', 'Salsa']}
self.menu = ['nft', 'nckt']
#self.p = PhotoImage(file="wahoos.gif")
#self.l = Label(self, image=self.p).grid(row=7, column=7)
def initUI(self):
self.grid()
self.parent.title("Wahoos Menu Test")
self.create_buttons()
def create_buttons(self):
for r in range(20):
for c in range(14):
Label(self, text='',
borderwidth=0).grid(row=r,column=c)
self.b = Button(self, text ="Begin Exam", relief=RIDGE, fg="black", command= self.on_button_press)
self.b.grid(row=19, column=7)
self.m = Label(self, text="")
self.m.grid(row=7, column=0)
L = Label(self, text="What comes in the following", fg="blue").grid(row=6, column=0)
self.tortButton = {'Flour':0, 'Corn':0, 'Wheat':0}
self.vegButton = {'Lettuce':0, 'Cabbage':0, 'Cheese':0,
'Ahee Rice':0, 'Brown Rice':0, 'Banzai Veg':0, 'Red Cabbage':0, 'Beans':0}
self.protButton = {'Carne Asada':0, 'Flamebroiled Chicken':0, 'Blackened Fish':0,
'Blackened Chicken':0, 'Flamebroiled Fish':0, 'Pork':0, 'Shrimp':0,
'Tofu':0, 'Blackened Mushroom':0, 'Rice and Beans':0, 'Banzai Veggies':0}
self.sauceButton = {'Salsa':0, 'Guacamole':0, 'Sour Cream':0,
'Roasted Pepper':0, 'Ketchup':0, 'Ranch':0, 'Balsamic':0,
'Mr. Lees':0, 'Teriyaki':0, 'Tapatio':0, 'Cream Cheese':0, 'Aioli':0}
V = Label(self, text="Veggies", fg="green").grid(row=1, column=11, sticky=W)
T = Label(self, text="Tortillas ", fg="green").grid(row=1, column=12, sticky=W)
P = Label(self, text="Proteins", fg="green").grid(row=1, column=13, sticky=W)
S = Label(self, text="Sauces", fg="green").grid(row=1, column=14, sticky=W)
c = 1
for key in self.tortButton:
c +=1
self.tortButton[key] = IntVar()
to = Checkbutton(self, text=key, variable=self.tortButton[key]).grid(row=c, column=12, sticky=W)
c = 1
for key in self.vegButton:
c += 1
self.vegButton[key] = IntVar()
vo = Checkbutton(self, text=key, variable=self.vegButton[key]).grid(row=c, column=11, sticky=W)
c = 1
for key in self.protButton:
c +=1
self.protButton[key] = IntVar()
po = Checkbutton(self, text=key, variable=self.protButton[key]).grid(row=c, column=13, sticky=W)
c = 1
for key in self.sauceButton:
c +=1
self.sauceButton[key] = IntVar()
so = Checkbutton(self, text=key, variable=self.sauceButton[key]).grid(row=c, column=14, sticky=W)
def on_button_press(self):
self.count = self.count + 1
if self.count == len(self.menu):
self.m.configure(text="")
self.b.configure(text ="Your Done! Click here to see your results.", command = self.compare)
else:
self.m.configure(text=self.menu[self.count])
self.b.configure(text ="Submit and Continue", command= self.read_checks)
def read_checks(self):
for key, value in self.vegButton.items():
state = value.get()
if state !=0:
print (key)
self.answers[self.menu[self.count]].append(key)
self.vegButton[key].set(0)
for key, value in self.tortButton.items():
state = value.get()
if state !=0:
print (key)
self.answers[self.menu[self.count]].append(key)
self.tortButton[key].set(0)
for key, value in self.protButton.items():
state = value.get()
if state !=0:
print (key)
self.answers[self.menu[self.count]].append(key)
self.protButton[key].set(0)
for key, value in self.sauceButton.items():
state = value.get()
if state !=0:
print (key)
self.answers[self.menu[self.count]].append(key)
self.sauceButton[key].set(0)
print (self.answers)
print (self.menuItems)
self.on_button_press()
def compare(self):
self.match = True
self.count = -1
for key in self.answers:
if self.answers[key] != self.menuItems[key]:
print ("For ", self.menu[self.count], " you answered ", self.answers[key])
print ("The correct answer for ", self.menu[self.count], " is ", self.menuItems[key])
self.count = self.count + 1
self.match = False
if self.match == True:
tkMessageBox.showinfo("All Pau!", "Nice job! I think your ready!")
else:
tkMessageBox.showinfo("Uh Ohh", "Looks like you have some more studying to do.")
def main():
root = Tk()
app = GUI(root)
root.mainloop()
if __name__ == '__main__':
main()
def compare(self)
是我进行比较并打印我想在结果屏幕上显示的输出的地方,这也是我弹出消息框的地方。