[英]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.