2016-04-25 98 views
-1

我想向我的應用程序添加一個Tk.Scale小部件,但是我在將非整數值設置爲分辨率參數時遇到問題。如果我將一個整數值傳遞給Scale構造函數,它可以正常工作,但對於任何非整數值(比如說0.1),我的縮放小部件不會移動。它出現在正確的地方,看起來很好,但沒有迴應我的移動嘗試。非整數分辨率的Tkinter Scale小部件

這裏是我的代碼與創建規模小部件:

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) 

的問題是,我不能重現我的應用程序之外的這個問題。換句話說,如果我只創建一個具有一個縮放小部件的簡單窗口,它可以處理任何分辨率值。所以看起來這個問題隱藏在這個構造函數調用之外的某個地方,但我無法弄清楚它在哪裏。可能是有人有同樣的問題,並可以告訴我我應該檢查什麼。

此外: 可能是重要的:在獨立(工作)的情況下,滑塊上面的值是「1.0」格式(以點作爲分隔符),在我的破碎的應用程序中它是「1,0 「格式(用逗號作爲分隔符)。可能會出現某種類型/格式不匹配的情況。

加2:

下面是小例子:

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

它聽起來像是有什麼東西,當解決方案是浮動死鎖,這是真的很難調試,如果沒有看到更多的代碼,請嘗試構建[MCVE](http://stackoverflow.com/help/mcve )。 –

+1

首先將代碼添加到'self.sliderMoved'並嘗試在其中的各個位置添加打印語句。如果問題只發生在您嘗試移動滑塊時,問題可能就在那裏。 –

+0

''1,0''不代表數字。 – TigerhawkT3

回答

0

我剛剛更新到Ubuntu 16.04,似乎這個問題已經不出現(Python的2.7.11+)。