ttk比例增加1

时间:2013-06-07 04:48:55

标签: python tkinter ttk

我的问题是我有一个比例和一个改变彼此值的旋转框。 OFr示例如果两者都从1变为100,如果我将比例设置为50,则旋转框也将改变,反之亦然。现在除了一个小问题之外我还能很好地工作。我无法通过整数来获得ttk规模。 Everytimer我改变了比例,我的数字后面有一小部分。这是我的代码:

def create_widgets(self):
"""my widgets"""
    spinval = IntVar()

    self.scale = ttk.Scale(self, orient = HORIZONTAL,
                                   length = 200,
                                   from_ = 1, to = 100,
                                   variable = spinval)
    self.scale.grid(row = 3,column = 1,sticky = W)


    self.spinbox = Spinbox(self, from_ = 1, to = 100,
                                   textvariable = spinval,
                                   command = self.update,
                                   width = 10)
    self.spinbox.grid(row = 3,column =3,sticky = W)

def update(self, nothing):
    """Updates the scale and spinbox"""
    self.scale.set(self.spinbox.get())

现在我的问题是:它是否可能以某种方式使其按整数递增或更改正常Tkinter比例的图形以使其看起来更好。欢迎任何帮助。

1 个答案:

答案 0 :(得分:5)

def create_widgets(self):
    """my widgets"""
    spinval = IntVar()

    self.scale = ttk.Scale(self, orient=HORIZONTAL,
                                length=200,
                                from_=1, to=100,
                                variable=spinval,
                                command=self.accept_whole_number_only)
    self.scale.grid(row=3, column=1, sticky=W)


    self.spinbox = Spinbox(self, from_=1, to=100,
                                textvariable=spinval,
                                command=self.update,
                                width=10)
    self.spinbox.grid(row=3,column=3, sticky=W)

def accept_whole_number_only(self, e=None):
    value = self.scale.get()
    if int(value) != value:
        self.scale.set(round(value))

def update(self, e=None):
    """Updates the scale and spinbox"""
    self.scale.set(self.spinbox.get())