簡體   English   中英

Python:如何在 Tkinter 中將函數作為變量命令傳遞

[英]Python: how to pass a function as a variable command in Tkinter

這是我第一次使用 Tkinter 創建 GUI 來模擬 DSP 設置。 我被困住了。

在此處輸入圖片說明

此 GUI 需要多個比例。 因此我寫了一個通用的比例函數。

# Overlap percent scale  
def overlap_percent():
    print("Testing")
    # op=var.get()
    # olive_features['overlap_perc']=op

    # generic scale function
def create_scale(self,parent,xval,yval,start,end,resolution,orient,default,lng,clr,cmdtrig):
    OHA_scale = tk.Scale(parent,resolution=resolution, from_=start, to=end, orient=orient,length=lng,fg=clr,command=cmdtrig)
    OHA_scale.grid(row=xval, column=yval, sticky=tk.E + tk.W + tk.N + tk.S, padx=20, pady=4)
    OHA_scale.set(default)


    # Overlap %
    yval=yval+2
    xval=1
    self.create_label(Oliveframe,xval,yval,"Overlap %")
    xval=3
    self.create_scale(Oliveframe,xval,yval,25,75,25,"vertical",75,90,'Black',"overlap_percent")
    xval=1
    yval=yval+1
    self.create_arrow(Oliveframe,xval,yval)

根據上面的代碼,我認為當我調整重疊比例時,它會在 cmd 行上打印“測試”。 什么都沒有發生。 為了測試代碼,我將通用比例的命令替換為

def create_scale(self,parent,xval,yval,start,end,resolution,orient,default,lng,clr,cmdtrig):
    OHA_scale = tk.Scale(parent,resolution=resolution, from_=start, to=end, orient=orient,length=lng,fg=clr,command=overlap_percent)

這導致了錯誤。

OHA_scale = tk.Scale(parent,resolution=resolution, from_=start, to=end, orient=orient,length=lng,fg=clr,command=overlap_percent) NameError: name 'overlap_percent' 未定義

我無法弄清楚我做錯了什么。 我究竟如何使用通用比例函數來控制多個比例?

在這條線上

OHA_scale = tk.Scale(parent,resolution=resolution, from_=start, to=end, 
orient=orient,length=lng,fg=clr,command=cmdtrig)

命令采用函數參數,但您發送一個字符串

self.create_scale(Oliveframe,xval,yval,25,75,25,"vertical",75,90,'Black',overlap_percent)

如果你這樣做就好了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM