2013-12-05 5 views
0

У меня этот код написан для программы GUI. Возникает вопрос Вопрос 1 - Глава 14 - Вопрос 6 -python 3.3 Программирование GUI

Automotive Джо выполняет следующие рутинные услуги по техническому обслуживанию:

Написать программу с графическим интерфейсом с контрольными кнопками, которые позволяют пользователю выбрать любой или все из них Сервисы. Когда пользователь нажимает кнопку, общая сумма должна отображаться. ЭТО МОЙ КОД, ЧТО-НИБУДЬ, МОЖЕТ ЛИ кто-нибудь сказать мне, почему это не работает?

############################################################################## 
# 
# 
#    Name: Marc DiFalco 
# 
#    Lab: 13 
# 
#    Description: GUI Lab on instructions 
# 
# 
# 
#   Inputs: Type of job 
#   Outputs: Job done and price 
#   Variables:CheckVar1,CheckVar2,CheckVar3,CheckVar4,CheckVar5,CheckVar6, 
#     CheckVar7, totalvalue 
# 
# 
# 
# 
# 
############################################################################### 
#import 
from tkinter import * 

root=Tk() 
root.title("Some GUI") 
root.geometry("400x700") 
CheckVar1=IntVar() 
CheckVar2=IntVar() 
CheckVar3=IntVar() 
CheckVar4=IntVar() 
CheckVar5=IntVar() 
CheckVar6=IntVar() 
CheckVar7=IntVar()#Set the variables 
totalvalue=0 

#The user can check off which jobs they would like to purchase 

Oil=Checkbutton(root,text="Oil Change 20.00",variable=CheckVar1,onvalue=20\ 
       ,offvalue=0,height=5,width=20) 
Lube=Checkbutton(root,text="Lube Job 18.00",variable=CheckVar2,onvalue=18\ 
       ,offvalue=0,height=5,width=20) 
RadiatorFlush=Checkbutton(root,text="Radiator Flush--$30.00",variable=CheckVar3,onvalue=30\ 
       ,offvalue=0,height=5,width=20) 
Transmission=Checkbutton(root,text="Transmission Flush--80.00",variable=CheckVar4,onvalue=80\ 
       ,offvalue=0,height=5,width=20) 
Inspection=Checkbutton(root,text="Inspection--15.00",variable=CheckVar5,onvalue=15\ 
       ,offvalue=0,height=5,width=20) 
Muffler=Checkbutton(root,text="Muffler replacement--100.00",variable=CheckVar6,onvalue=100\ 
       ,offvalue=0,height=5,width=20) 
Tire=Checkbutton(root,text="Tire Rotation--20.00",variable=CheckVar7,onvalue=20\ 
       ,offvalue=0,height=5,width=20) 
somebutton=Button(root, text="Total") 

#Call each job 
Oil.pack() 
Lube.pack() 
RadiatorFlush.pack() 
Transmission.pack() 
Inspection.pack() 
Muffler.pack() 
Tire.pack() 
somebutton.pack() 


#main loop 
root.mainloop() 
+1

Не могли бы вы объяснить, что вы подразумеваете под '' это не работает? '? Ошибка? Возможно, неожиданный результат? – aIKid

+0

да прошу прощения, я могу показать экран, но он не будет тотально все, что я делаю, и не отображает общий экран –

+0

вы ничего не делаете в 'somebutton = Button (root, text =" Total ") ' – adil

ответ

2

Это потому, что вы никогда не вычисляете общее количество. Чтобы устранить эту проблему, вам необходимо:

  1. Сделайте ярлык, чтобы провести общее количество.

  2. Создайте функцию, которая получит все значения IntVar s, суммирует их, а затем изменит текст метки, чтобы отобразить общее количество.

  3. Bind somebutton к этой функции.

Ниже приводится исправленная версия сценария:

from tkinter import * 

root=Tk() 
root.title("Some GUI") 
root.geometry("400x700") 
CheckVar1=IntVar() 
CheckVar2=IntVar() 
CheckVar3=IntVar() 
CheckVar4=IntVar() 
CheckVar5=IntVar() 
CheckVar6=IntVar() 
CheckVar7=IntVar() 
totalvalue=0 


Oil=Checkbutton(root,text="Oil Change 20.00",variable=CheckVar1,onvalue=20\ 
       ,offvalue=0,height=5,width=20) 
Lube=Checkbutton(root,text="Lube Job 18.00",variable=CheckVar2,onvalue=18\ 
       ,offvalue=0,height=5,width=20) 
RadiatorFlush=Checkbutton(root,text="Radiator Flush--$30.00",variable=CheckVar3,onvalue=30\ 
       ,offvalue=0,height=5,width=20) 
Transmission=Checkbutton(root,text="Transmission Flush--80.00",variable=CheckVar4,onvalue=80\ 
       ,offvalue=0,height=5,width=20) 
Inspection=Checkbutton(root,text="Inspection--15.00",variable=CheckVar5,onvalue=15\ 
       ,offvalue=0,height=5,width=20) 
Muffler=Checkbutton(root,text="Muffler replacement--100.00",variable=CheckVar6,onvalue=100\ 
       ,offvalue=0,height=5,width=20) 
Tire=Checkbutton(root,text="Tire Rotation--20.00",variable=CheckVar7,onvalue=20\ 
       ,offvalue=0,height=5,width=20) 

################################################################## 
total_lbl = Label(root) 
def click(): 
    total = 0 
    for var in (CheckVar1, CheckVar2, CheckVar3, CheckVar4, CheckVar5, CheckVar6, CheckVar7): 
     total += var.get() 
    total_lbl.config(text="${}.00".format(total)) 
somebutton=Button(root, text="Total", command=click) 
################################################################### 

Oil.pack() 
Lube.pack() 
RadiatorFlush.pack() 
Transmission.pack() 
Inspection.pack() 
Muffler.pack() 
Tire.pack() 
somebutton.pack() 

############### 
total_lbl.pack() 
############### 

root.mainloop() 

материала, который я изменил в комментарии коробках.

Смежные вопросы