2011-05-25 46 views
5

我原來的程序中使用input,像這樣:停止Python程序,直到用戶執行一個動作

n = input("Enter your favorite number: ") 
# do stuff with number 

現在,我已經切換到GTK圖形用戶界面,但仍想完成同樣的事情。現在看這個非常相似的一段代碼:

n = myWindow.getNumber() 
# do stuff with number 

是否可以寫一個getNumber()方法,只有用戶後返回按下窗口提交按鈕? (如在input功能是如何工作的),或者這是我唯一的選擇:

def callback(widget, event): 
    n = myWindow.inputWidget.getValue() 
    # do stuff with number 

n = myWindow.getNumber(callback) 

更新:我要做到這一點沒有gtk.Dialog,因爲我不想要一個對話框每次彈出千萬用戶輸入是必需的。

回答

3

你需要的是一個模態對話框。我根本不知道GTK(或PyGTK),但似乎有一個例子in the documentation

+0

謝謝,但模態對話框只是阻止用戶與對話框外的任何小部件進行交互。 – 2011-05-25 18:24:53

+1

@Sam:據我所知,gtk.Dialog的run方法確實阻塞了程序,只有在得到響應時纔會返回(不需要回調)。子類化gtk.Dialog可能是你需要的。 – 2011-05-25 21:01:28

+0

@Jong,我認爲你是對的。 – 2011-05-25 23:40:15