2013-06-07 2 views
2

내 문제는 저울과 서로의 값을 바꾸는 스핀 상자가 있습니다. OFr 예를 들어 둘 다 1에서 100으로 설정하면 스케일을 50으로 설정하면 스핀 상자도 변경되고 반대의 경우도 마찬가지입니다. 이제는 사소한 문제를 제외하고는 거의 잘 작동합니다. ttk 스케일을 정수로 올릴 수 없습니다. Everytimer 나는 규모를 바꾸고, 나는 내 숫자 뒤에 1 톤의 소수를 얻는다. 여기 내 코드입니다 :ttk 스케일에 대해 1 씩 증가합니다.

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
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()) 
관련 문제