<ol>
<li>您的程序中没有<code>myGui.mainloop()</code>。在</li>
<li><code>TOPPING SELECTION</code>不是有效语句。而且,下面的行不需要是缩进块。在</li>
<li>不要将<code>tkinter</code>小部件的创建和放置放在一行,否则您将得到一大堆引用<code>None</code>(由<code>pack()</code>返回的值)的变量。在</li>
<li>像<code>olivesSelection=a.get()</code>这样的语句并没有像您所想的那样做。该语句调用<code>a.get()</code>,获取返回值<code>0</code>(因为它发生在程序启动时),然后将<code>0</code>分配给<code>olivesSelection</code>。复选框不会更改该变量的值。如果您希望在选中复选框时动态发生,则必须<code>trace()</code>这些<code>IntVar</code>,并将<code>command</code>添加到{<cd14>}s中</li>
<li><code>checkToppings()</code>从不调用。在</li>
<li>检查<code>olivesSelection==1</code>是否总是<code>False</code>,因为<code>a.get()</code>在分配给<code>olivesSelection</code>时是{<cd8>}(见上文)。在这里使用<code>a.get()</code>。在</li>
<li>如果在<code>checkToppings()</code>中使用<code>elif</code>,它只会向列表中添加一个topping(第一个有复选框的topping)。在</li>
<li>对于只有<code>0</code>或{<cd26>}的值,您不需要使用<code>==1</code>只需说<code>if pepperoniSelection:</code>。<code>1</code>是一个真实值,<code>0</code>是一个错误的值(从技术上讲,<code>1</code>实际上是{<cd31>},而{<cd8>}实际上是{<cd17>},因为{<cd34>}是{<cd35>}的子类)。在</li>
</ol>
<hr/>
<pre><code>from tkinter import *
myGui=Tk()
myGui.geometry("800x600")
myGui.title("Pete's Pizza Parlour~Order Form")
def checkem():
print(a.get(), b.get(), c.get(), d.get(), e.get(), f.get(), g.get(), h.get())
print(checkToppings())
toppings_lbl=Label(myGui,text="Toppings:",font=("Good Times",10),fg="blue")
toppings_lbl.pack()
a=IntVar()
olives_chk=Checkbutton(myGui,text="Olives",variable=a)
olives_chk.pack()
b=IntVar()
tomatoes_chk=Checkbutton(myGui,text="Tomatoes",variable=b)
tomatoes_chk.pack()
c=IntVar()
pepperoni_chk=Checkbutton(myGui,text="Pepperoni",variable=c)
pepperoni_chk.pack()
d=IntVar()
hotPeppers_chk=Checkbutton(myGui,text="Hot Peppers",variable=d)
hotPeppers_chk.pack()
e=IntVar()
onions_chk=Checkbutton(myGui,text="Onions",variable=e)
onions_chk.pack()
f=IntVar()
ham_chk=Checkbutton(myGui,text="Ham",variable=f)
ham_chk.pack()
g=IntVar()
sausage_chk=Checkbutton(myGui,text="Sausage",variable=g)
sausage_chk.pack()
h=IntVar()
greenPeppers_chk=Checkbutton(myGui,text="Green Peppers",variable=h)
greenPeppers_chk.pack()
thebutton = Button(myGui, text='check', command=checkem)
thebutton.pack()
olivesSelectionStr="olives"
tomatoesSelectionStr="tomatoes"
pepperoniSelectionStr="pepperoni"
hotPeppersSelectionStr="hot peppers"
onionsSelectionStr="onions"
hamSelectionStr="ham"
sausageSelectionStr="sausage"
greenPeppersSelectionStr="green peppers"
noToppingsStr="no toppings."
def checkToppings():
toppings = [var for val,var in zip((a.get(), b.get(), c.get(), d.get(),
e.get(), f.get(), g.get(), h.get()),
(olivesSelectionStr, tomatoesSelectionStr,
pepperoniSelectionStr, hotPeppersSelectionStr,
onionsSelectionStr, hamSelectionStr,
sausageSelectionStr, greenPeppersSelectionStr))
if val]
if not toppings:
return 'no toppings.'
elif len(toppings)==1:
return toppings[0] + '.'
elif len(toppings)==2:
return ' and '.join(toppings) + '.'
else:
return ', '.join(toppings[:-1]) + ', and ' + toppings[-1] + '.'
myGui.mainloop()
</code></pre>