Tkinter中的对数刻度
有没有办法用Tkinter创建一个可以显示对数值的滑块?或者说,能不能把刻度设置成对应的值?我需要一个范围在10的4次方到10的9次方之间的滑块,指数要用整数表示。
我在想直接给“轴”加上标签也行,但用10的x次方来表示其实更实用、更容易理解。
1 个回答
2
from Tkinter import *
class Slider(Frame):
def __init__(self, parent=None ):
Frame.__init__(self, parent)
self.number = 0
self.slide = Scale(self, orient=HORIZONTAL, command=self.setValue,
length=200, sliderlength=20,
showvalue=0, tickinterval=1,
fro=4, to=9, font=('Arial',9))
self.text = Label(self, font=('Arial',18))
self.slide.pack(side=RIGHT, expand=1, fill=X)
self.text.pack(side=TOP, fill=BOTH)
self.unimap = {'4':u'\u2074','5':u'\u2075','6':u'\u2076',
'7':u'\u2077','8':u'\u2078','9':u'\u2079'}
def setValue(self, val):
self.number = (10**(int(val)))
self.text.configure(text='10%s' %(self.unimap[val]))
root = Tk()
s = Slider(root)
s.pack()
root.mainloop()