2016-12-23 51 views
1

我一直在与Tkinter一起工作,我遇到了spinbox的问题。我有spinbox设置为:from_=1, to=5。不管我做什么spinbox输出一个5,因为它是可变的。我在其他人的回答中已经阅读了很多关于相关问题的帖子,似乎无法找到答案。Spinbox输出值

单击鼠标并在spinbox中选择一个值不会执行任何操作。

下面是代码:

sp1=Spinbox(root, bd=3, state='readonly', from_=1, to=5, font="bold", wrap="true") 
sp1.grid(row=3, column=2, padx=20) 
sp1.delete(0, END) 
sp1.bind("<Button-1>") 
i=sp1.get() 

i总是等于5

+0

的'l'不会改变那价值,你需要'获得() '当你需要使用该值时,滑块的值。 (这就是为什么它叫'.get()') –

+0

相关:http://stackoverflow.com/questions/37215397/valueerror-cannot-convert-string-from-entry-to-int-even-though-input -is-int/37216659#37216659虽然我确定有一个更好的例子,我可以指出你。 –

+0

你想要更像这样的东西吗? http://pastebin.com/dH37xGmG –

回答

1

您可以分配功能使用command=Spinbox这个函数将被执行每当你在Spinbox变化值。然后你可以从Spinbox得到价值。现在,只有在开始时才能获得价值。

import tkinter as tk 

# --- functions --- 

def callback(): 
    print("value:", w.get()) 

# --- main --- 

root = tk.Tk() 

w = tk.Spinbox(root, state='readonly', from_=1, to=5, command=callback) 
w.pack() 

root.mainloop() 
1

在初始化,您可以传递一个回调函数的参数commandSpinbox

# python 3 
from tkinter import * 
# python 2 
#from Tkinter import * 

root = Tk() 

def on_spinbox_change(): 
    print(sp1.get()) 

sp1 = Spinbox(root, bd=3, state='readonly', from_=1, to=5, font="bold", wrap="true", command=on_spinbox_change) 
sp1.grid(row=3, column=2, padx=20) 

root.mainloop()