python - 是否可以使用 tkinter 动态更改刻度的“到”值?
问题描述
我想知道是否可以使用 tkinter 用另一个比例动态改变一个比例的最大值。
我有一个带有两个刻度的示例,其中第一个刻度是第二个刻度的最大值sc_maxVal
的变量。maxVal
我可以首先设置它,但我不知道如何更改脚本运行时的to
参数。sc_var
sc_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()
解决方案
您可以配置刻度以在其值更改时调用函数。在该功能中,您可以使用该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()
推荐阅读
- python - 检测周期性的自相关
- midi - 使用带有 partitionByInstrument() 的 music21 读取 MIDI 文件以获取返回空列表的音符和和弦
- java - 10000ms 后无法从 /192.168.43.1(端口 47726)连接到 /192.168.43.23(端口 8000)
- solr - Storm Crawler 中抓取阶段与处理阶段的分离
- asp.net-mvc - 是否可以通过单击按钮生成相同表单的新实例?
- scala - scala中有没有办法我可以根据两个数组的内容形成地图
- sql - 按表透视表时间
- rest - 无法使用 Vue.js 完成简单的 GET 请求
- python - 为什么 user.is_authenticated 在注销后断言为真
- android - 在 Android 中,两个微调器的文本应该正好在彼此的下方开始