2017-06-22 13 views
0

我有一個按鈕,其功能是我可以使用什麼而不是一個while循環來檢查某些內容?

def callback2(): 
    callback() 

callback()功能

def callback(): 
    usein = None 
    if inspect.stack()[1][3] == callback2: 
     global inputText 
     usein = inputText.get() 
     return None 
    while True: #freezes everything, because tkinter 
     if usein: 
      return usein 

現在,我之所以做這樣是因爲其他函數調用callback()尋找由輸入的值按鈕,但我必須讓他們等待按鈕被按下。但是因爲我使用tkinter,while循環不起作用 - 它只是使GUI凍結。那麼我可以用什麼來代替?我一直在爲此工作好幾天。如果需要,我很樂意添加我的代碼的任何其他部分。

+0

等待,所以'callback'會做一些不同的事情,不管它是否被'callback2'調用?這似乎是錯誤的...爲什麼多個東西調用一個函數,如果它根據調用者做了不同的事情? –

+0

你應該設置一個標誌,無論set'usein'是否應該檢查該標誌,如果設置返回任何'usein'返回 – MotKohn

+0

'while'循環凍結一切與Tkinter無關; usein'沒有辦法在循環內改變,所以如果它不能立即退出,它就不可能退出。 – jasonharper

回答

1
isButtonClicked = false #a global variable 
def callback2(): 
    isButtonClicked = true 
    callback() 
    isButtonClicked = false 

一個想法可能是使用一個名爲isButtonClicked全局變量,並分配一個假值,並修改其調用回調方法這樣的其他方法:

def othermethod(): 
if isButtonClicked: 
    callback() 

但是你必須確保變量是線程安全的。

1

不是tkinter專家,但如果你想在點擊按鈕時獲得一些文本輸入,下面的工作可能會起作用。

def callback(): 
    usein = entry.get() 
    # do whatever with usein 

master = Tk() 
entry = Entry(master) # the text input 
Button(master, text='Button', command=callback) 
相關問題