2016-04-25 8 views
-1

Ich versuche, ein Tk.Scale-Widget zu meiner Anwendung hinzuzufügen, aber ich habe ein Problem mit der Einstellung nicht ganzzahligen Wert auf den Auflösungsparameter. Wenn ich einen Integer-Wert an Scale-Konstruktor übergebe, funktioniert es korrekt, aber mit jedem nicht ganzzahligen Wert (etwa 0.1) bewegt sich mein Skalierungs-Widget nicht. Es erscheint an der richtigen Stelle und sieht gut aus, aber reagiert nicht auf meine Versuche, es zu bewegen.Tkinter Scale Widget mit nicht ganzzahliger Auflösung

Hier ist mein Code zur Schaffung von Skalen Widget bezogen werden:

self.sliderValue = Tk.DoubleVar() 
    self.slider = Tk.Scale(self.frame, 
          from_=float(self.lowerValue.get()), 
          to=float(self.upperValue.get()), 
          orient=Tk.HORIZONTAL, 
          length=180, 
          variable=self.sliderValue, 
          resolution=0.1, # Here is the problem 
          command=self.sliderMoved) 

Das Problem ist, ich dieses Problem außerhalb meiner Anwendung nicht wiedergeben kann. Mit anderen Worten, wenn ich nur ein einfaches Fenster mit einem Skalierungswidget erzeuge, funktioniert es mit allen Auflösungswerten. So scheint es, dass das Problem irgendwo außerhalb dieses Aufrufs des Konstruktors versteckt ist, aber ich kann nicht herausfinden, wo. Vielleicht hat jemand das selbe Problem und kann mir raten was ich überprüfen soll.

Vielleicht ist es wichtig: im Standalone (Arbeits) Fall ist der Wert über dem Schieberegler im "1.0" -Format (mit dem Punkt als Trennzeichen), und in meiner gebrochenen Anwendung ist es "1,0 "format (mit dem Komma als Trennzeichen). Mai durch eine Art von Format/Format-Mismatch passiert hier.

Zusatz 2:

ist hier minimal Beispiel:

import Tkinter as Tk 
from pylab import * 

# cla() # if you uncomment these two lines, 
# clf() # scale will break for non-int resolutions 

root = Tk.Tk() 

var = Tk.DoubleVar() 
scale = Tk.Scale(root, from_=6.0, to=8.5, variable = var, 
       resolution=0.1, orient=Tk.HORIZONTAL) 
scale.grid(column=0, row=0, columnspan=3) 

root.mainloop() 
+2

Es klingt wie es ist etwas, das Ihr Programm blockiert, wenn die Auflösung Float ist, die wirklich schwer zu debuggen ist, ohne mehr Code zu sehen, bitte versuchen Sie eine [MCVE] (http://stackoverflow.com/help/mcve). –

+1

Beginnen Sie mit dem Einschließen des Codes in 'self.sliderMoved' und versuchen Sie, an verschiedenen Stellen Druckanweisungen hinzuzufügen. Wenn das Problem nur auftritt, wenn Sie versuchen, den Schieberegler zu verschieben, ist das Problem möglicherweise vorhanden. –

+0

''1,0'' repräsentiert keine Nummer. – TigerhawkT3

Antwort

0

ich Ubuntu 16.04 nur aktualisiert haben und es scheint, dass dieses Problem nicht mehr richtig erscheint (Python 2.7.11+).