首页 > 解决方案 > 是否可以使用 tkinter 动态更改刻度的“到”值?

问题描述

我想知道是否可以使用 tkinter 用另一个比例动态改变一个比例的最大值。

我有一个带有两个刻度的示例,其中第一个刻度是第二个刻度的最大值sc_maxVal的变量。maxVal

我可以首先设置它,但我不知道如何更改脚本运行时的to参数。sc_varsc_max

import tkinter as tk
    
mainApp = tk.Tk()
   
mainApp.title("Windows")
mainApp.geometry("800x600")
    
maxVal = tk.DoubleVar()
maxVal.set(20)
    
var = tk.DoubleVar()
var.set(int(maxVal.get()/2))
    
sc_max = tk.Scale(mainApp, label= 'maxVal', from_= 10, to= 40, orient= tk.HORIZONTAL, length= 500, variable= maxVal).pack()
sc_var = tk.Scale(mainApp, label= 'var', from_= 1, to= int(maxVal.get()), orient= tk.HORIZONTAL, length= 500, variable= var).pack()
    
mainApp.mainloop()

标签: pythontkinter

解决方案


您可以配置刻度以在其值更改时调用函数。在该功能中,您可以使用该configure方法配置其他比例。

pack在创建小部件的同一语句中调用时也会犯一个非常常见的错误。您需要将它们分开,否则您分配的变量将设置为None因为.pack(...)返回None

注意: 将command新值作为参数传递。

def update_scale(new_max):
    sc_var.configure(to=new_max)

sc_var = tk.Scale(...)
sc_max = tk.Scale(..., command=update_scale)

sc_var.pack()
sc_max.pack()

推荐阅读