為了避免為我非常基本的 python 程式撰寫多次類似的 GUI,我在一個獨立的腳本中撰寫了一個 GUI 生成器函式,如下所示:
def GUI_builder_function(entry_list, entry_default_list, button_list, function_list, panel_title, background_colour):
#Entries Generation
....
#Buttons Generation
for i in range(0, N_buttons,1):
button = tk.Button(text = button_list[i], command= (lambda i=i: eval(function_list[i].__name__ "()")), bg = 'firebrick', fg = 'white', font = ('helvetica', 9, 'bold'))
input_data_panel.create_window(0.5*pos_width 300, 0.35*pos_height*(2*i 1) 20, window = button)
buttons.append(button)
...
它是一個非常簡單的 GUI 生成器,它創建一些與輸入條目串列和按鈕串列相對應的條目和按鈕,并以適當的方式將它們隔開。
現在,我的問題是:當用戶單擊通用第 i 個按鈕時,它必須執行呼叫者函式發送給 gui builder function 的函式 function_list[i]。
然而,盡管 gui builder 函式已接收 function_list[i] 作為輸入,但在按下按鈕時它無法執行它。python引擎說:
“名稱‘函式名稱’未定義”。
當然它是在呼叫函式中定義的。但是在通用 gui builder 函式中匯入每個程式的每個呼叫者函式會很臟。我正在尋找的是如何將函式定義作為 gui builder 函式的輸入發送給 gui builder,該函式位于獨立腳本中,因為它必須由不同的程式使用。
uj5u.com熱心網友回復:
如果我正確理解了問題,您只需直接參考該函式,并且假設function_list實際上是一個函式串列,而不是代表函式名稱的字串串列。
def foo():
pass
def bar():
pass
function_list = [foo, bar]
...
button = tk.Button(..., command= function_list[i], ...)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/441020.html
標籤:Python python-3.x tkinter tkinter-entry
上一篇:使用單獨的字典更改字典鍵?
