在 Tkinter 滑块中,您能否将范围从线性变为指数,以便在处理大量数字时更容易选择数字?
In a Tkinter slider, can you vary the range from being linear to exponential for easier number selection when dealing with large numbers?
我目前正在 Python 中为二十一点模拟器创建一个库。连接到模拟器的是一个控制输入的 Tkinter GUI。我希望输入范围为 1-50,000,000;但是,我希望用户能够轻松 select 更小的数字范围,例如 15,000-75,000。
我认为最好的方法是使用 f(x)=x^2 而不是正常的线性行为来更新滑块中的值范围。
我相信我可以创建一个新的小部件来显示 f(x)=x^2 函数的值,其中输入是 slider.get()滑块小部件。但我希望有人知道一个更优雅的解决方案,可以使用滑块小部件本身显示和使用这个 f(x)=x^2 值。
这是从此处找到的教程点示例中提取的基本小部件代码:https://www.tutorialspoint.com/python/tk_scale.htm
def sel():
selection = "Value = " + str(var.get())
label.config(text = selection)
root = Tk()
var = DoubleVar()
scale = Scale( root, variable = var )
scale.pack(anchor=CENTER)
button = Button(root, text="Get Scale Value", command=sel)
button.pack(anchor=CENTER)
label = Label(root)
label.pack()
root.mainloop()```
您可以创建一个版本的“缩放”小部件,它将 return 滑块的值但应用了特定的数学函数。在下面的示例中,我 return x^2.
import tkinter as tk
def sel():
selection = "Value = " + str(scale2.value)
label.config(text = selection)
class LogScale(tk.Scale):
def __init__(self,parent,**kwargs):
tk.Scale.__init__(self,parent,**kwargs)
self.var = tk.DoubleVar()
#self.config[showvalue] = 0
self['showvalue'] = 0
self['label'] = 0
self['command'] = self.update
self['variable'] = self.var
def update(self,event):
self.config(label=self.value)
@property
def value(self):
return str(int(self.var.get()) ** 2)
root = tk.Tk()
scale2 = LogScale(root)
scale2.pack()
button = tk.Button(root, text="Get Scale Value", command=sel)
button.pack(anchor=tk.CENTER)
label = tk.Label(root)
label.pack()
root.mainloop()
我隐藏了与滑块一起移动的普通标签,并使用另一个标签显示“已修改”值。
我目前正在 Python 中为二十一点模拟器创建一个库。连接到模拟器的是一个控制输入的 Tkinter GUI。我希望输入范围为 1-50,000,000;但是,我希望用户能够轻松 select 更小的数字范围,例如 15,000-75,000。
我认为最好的方法是使用 f(x)=x^2 而不是正常的线性行为来更新滑块中的值范围。
我相信我可以创建一个新的小部件来显示 f(x)=x^2 函数的值,其中输入是 slider.get()滑块小部件。但我希望有人知道一个更优雅的解决方案,可以使用滑块小部件本身显示和使用这个 f(x)=x^2 值。
这是从此处找到的教程点示例中提取的基本小部件代码:https://www.tutorialspoint.com/python/tk_scale.htm
def sel():
selection = "Value = " + str(var.get())
label.config(text = selection)
root = Tk()
var = DoubleVar()
scale = Scale( root, variable = var )
scale.pack(anchor=CENTER)
button = Button(root, text="Get Scale Value", command=sel)
button.pack(anchor=CENTER)
label = Label(root)
label.pack()
root.mainloop()```
您可以创建一个版本的“缩放”小部件,它将 return 滑块的值但应用了特定的数学函数。在下面的示例中,我 return x^2.
import tkinter as tk
def sel():
selection = "Value = " + str(scale2.value)
label.config(text = selection)
class LogScale(tk.Scale):
def __init__(self,parent,**kwargs):
tk.Scale.__init__(self,parent,**kwargs)
self.var = tk.DoubleVar()
#self.config[showvalue] = 0
self['showvalue'] = 0
self['label'] = 0
self['command'] = self.update
self['variable'] = self.var
def update(self,event):
self.config(label=self.value)
@property
def value(self):
return str(int(self.var.get()) ** 2)
root = tk.Tk()
scale2 = LogScale(root)
scale2.pack()
button = tk.Button(root, text="Get Scale Value", command=sel)
button.pack(anchor=tk.CENTER)
label = tk.Label(root)
label.pack()
root.mainloop()
我隐藏了与滑块一起移动的普通标签,并使用另一个标签显示“已修改”值。