我目前正在為Python中的21點模擬器創建一個庫。連接到模擬器的是一個控制輸入的Tkinter GUI。我希望輸入的范圍是 1-50,000,000;但是,我希望用戶能夠輕松選擇更小的數字范圍,例如 15,000-75,000。
我認為實作這一目標的最佳方式是讓滑塊中的數值范圍使用 f(x)=x^2 進行更新,而不是其正常的線性行為。
我相信我可以創建一個新的小組件來顯示 f(x)=x^2 函式的值,其中輸入是滑塊小組件的 slider.get()。但我希望有人知道一個更優雅的解決方案,可以使用滑塊小組件本身來顯示和使用這個 f(x)=x^2 的值。
這里有一些基本的 widget 代碼,這些代碼是從這里找到的一個教程的要點示例中撕下來的。https://www.tutorialspoint.com/python/tk_scale.htm uj5u.com熱心網友回復: 你可以創建一個Scale widget的版本,它將回傳滑塊的值,但會應用一個特定的數學函式。在下面的例子中,我回傳x^2. 我隱藏了與滑塊一起移動的普通標簽,并使用另一個標簽來顯示 "修改 "值。
標籤:。
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()````。
import tkinter as tk
def sel()。
selection = "Value =" str(scale2.value)
label.config(text = selection)
class LogScale(tk.Scale)。
def __init__(self,father,**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: self.config(label=self.value)
def value(self)。
return str(int(self.var.get() ) ** 2)
root = tk.Tk()
scale2 = LogScale(root)
scale2.打包()
button = tk.Button(root, text="獲取刻度值", command=sel)
button.pack(anchor=tk.center)
label = tk.Label(root)
label.pack()
root.mainloop()
