私は現在、チェックボタンで受け取った入力を読み取り、それらを正しい答えと比較してから、良い仕事のメッセージボックスまたは作業を続けるメッセージボックスのいずれかを表示する、私のレストランの機能するメニューテストを持っています。また、質問が正しくない場合は、回答した内容と正しい回答が表示されるように設定しています。メッセージボックスの代わりに、単に彼らが間違っていたことを印刷するのではなく、最終結果を得たいと思います良い仕事(またはそれらの行に沿ったもの)メッセージが表示されるか、間違った答えと正しい答えが印刷された画面のいずれかです。これまでにすべてをどのように実装したかを示すコードを次に示します。すべてが機能していると述べたように、より見栄えを良くする方法を見つけようとしているだけで、これを行う方法を見つけることができませんでした。
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)
比較を行い、結果画面に表示したい出力を印刷する場所です。これは、メッセージボックスがポップアップする場所でもあります。