3

私の問題は、お互いの値を変更するスケールとスピンボックスがあることです。たとえば、両方が 1 から 100 になる場合、スケールを 50 に設定すると、スピンボックスも変化し、その逆も同様です。これで、1 つの小さな問題を除いて、これでかなりうまく機能するようになりました。ttk スケールを整数で上げることができません。スケールを変更するたびに、数字の後ろに大量の小数が表示されます。これが私のコードです:

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 スケールのグラフィックを変更して見栄えを良くすることは可能ですか? どんな助けでも大歓迎です。

4

1 に答える 1

6
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())
于 2013-06-07T05:58:15.673 に答える