2014-12-03 45 views
-1

我有一個項目,我正在爲類工作,我正在使用tkinter來構建我的基本GUI。 當我運行代碼我有兩個下拉菜單來選擇選項。我也想要一個按鈕來關閉窗口並將程序推進到下一個GUI窗口。但是我不能得到一個按鈕來關閉窗口而不會導致程序終止。這裏是我的代碼如何在不終止程序的情況下關閉tkinter窗口?

from tkinter import * 

Options_year = ["2014", "2013", "2012", "2011", "2010"] 
Options_month = ["January","February", "March", "April","May", "June", "July","August","September","October","November", 
       "December"] 
master = Tk() 
variable_year = StringVar(master) 
variable_year.set(Options_year[0]) 
variable_month = StringVar(master) 
variable_month.set(Options_month[0]) 
window = apply(OptionMenu, (master, variable_year) + tuple(Options_year)) 
window_month = apply(OptionMenu, (master,variable_month) + tuple(Options_month)) 
window.pack() 
window_month.pack() 
button = Button(master, text = "Continue", command = master.quit()) 
#the line above is the button that i want to use to close the window 
button.pack() 
mainloop() 
print (variable_month.get()) 
print (variable_year.get()) 

編輯: 轉換這框架和使用下面所提供的答案,得到它的工作。感謝每一位幫助過我的人

+0

上面的代碼無法運行。 'tinter'是拼寫錯誤的(t​​kinter?Tkinter?)。內置的'apply'在2.7中被棄用,並且在3.x中被淘汰。不要使用它。 – 2014-12-04 00:09:08

回答

0

使用Toplevel或框架,將小部件放入它並銷燬()它。如果你不想顯示,你可以使用master.withdraw()或iconify()。

+0

一旦mainloop運行後的代碼沒有錯誤,這應該是不必要的。 – 2014-12-04 00:10:39

+0

作爲一般規則,您不應在mainloop之後運行任何代碼。 – 2014-12-07 00:41:07

1

摧毀gui也破壞tk變量。由於嘗試訪問不存在長度較長的variable_month的.get方法,我強烈懷疑您遺漏了程序因異常追溯而終止的重要信息。以下工作正常。

from tkinter import * 
root = Tk() 
root.mainloop() 
print('here') 
相關問題