2015-12-18 87 views
1

我希望你能幫助我解決這個問題..如何通過按下按鈕關閉程序?

我有以下代碼:

from Tkinter import * 
import ttk 
import time 

def start(): 
    start_stop.config(text="QUIT", command=stop) 
    for i in xrange(5): 
     pbar_det.step(19.99) 
     master.update() 
     # Busy-wait 
     time.sleep(1) 
    master.quit() 

def stop(): 
    master.quit() 

master = Tk() 

start_stop = Button(master, text='START', command=start) 
start_stop.grid(row=0, column=1, pady=2, padx=2, sticky=E+W+N+S) 

pbar_det = ttk.Progressbar(master, orient="horizontal", length=600, mode="determinate") 
pbar_det.grid(row=0, column=0, pady=2, padx=2, sticky=E+W+N+S) 

master.mainloop() 

我按下啓動按鈕和進度條開始,按鈕上的文字更改爲「退出」並結束時(和程序關閉)當酒吧已滿(五秒)

我怎麼能這樣做,按下「退出」關閉程序在那個時候? (不等待吧檯填充)

我希望你能幫助我! 謝謝!

回答

1

試試這個:

from Tkinter import * 
import ttk 
import time 
import threading 

def start(): 
    start_stop.config(text="QUIT", command=stop) 
    thread = threading.Thread(target=progBar, args=()) 
    thread.daemon = True 
    thread.start() 

def progBar(): 
    for i in xrange(5): 
     pbar_det.step(19.99) 
     master.update() 
     # Busy-wait 
     time.sleep(1) 
    master.quit() 

def stop(): 
    master.quit() 

master = Tk() 

start_stop = Button(master, text='START', command=start) 
start_stop.grid(row=0, column=1, pady=2, padx=2, sticky=E+W+N+S) 

pbar_det = ttk.Progressbar(master, orient="horizontal", length=600, mode="determinate") 
pbar_det.grid(row=0, column=0, pady=2, padx=2, sticky=E+W+N+S) 

master.mainloop() 

編輯

變量名固定。

+0

謝謝,這工作正常,但如果酒吧已滿,並沒有按下按鈕>程序沒有在5秒內完成。保持打開狀態,直到我們按下「QUIT」按鈕,如Fix it? – Krowa

+0

@Krowa這對我有用......你是什麼意思? –

+0

如果我明白,如果進度條完成,您還希望程序退出。它應該現在就這樣工作。 –