我在打印滑块的值时遇到问题。我在滑块下方创建了一个按钮来执行此操作,但在按下之前会打印,按下时不会打印。
我也有让滑块水平的问题。我知道它是“orient = HORIZONTAL”,当它不在课堂上时它会起作用,但是当它在课堂上它会给我带来麻烦。
这是代码,一如既往,非常感谢你! :)
import Tkinter as tki # Tkinter -> tkinter in Python 3
import tkMessageBox
class GUI(tki.Tk):
def __init__(self):
tki.Tk.__init__(self)
self.wm_title("Menu Title")
RWidth=500
RHeight=300
self.geometry(("%dx%d")%(RWidth,RHeight))
menubar = tki.Menu(self)
# create a pulldown menu, and add it to the menu bar
menu0 = tki.Menu(menubar, tearoff=0)
menu0.add_command(label="Run Slider", command=self.slider_prompt)
menu0.add_separator()
menu0.add_command(label="Exit", command=self.quit)
menubar.add_cascade(label="Slider", menu=menu0)
# display the menu
self.config(menu=menubar)
def slider_prompt(self, msg='This is a slider'):
slider_window= self.top = tki.Toplevel(self)
slider_window.title("Slider Title")
RWidth=300
RHeight=200
slider_window.geometry(("%dx%d")%(RWidth,RHeight))
label0 = tki.Label(slider_window, text=msg)
label0.pack()
slider = tki.Scale(slider_window, from_=100, to=1000) # have to make horizontal
slider.pack()
#put button here that starts the program (pass the slider value)
button_cheat = tki.Button( slider_window, text='Print Value', command=self.print_slide_value(slider.get()) )
button_cheat.pack()
button_close = tki.Button(slider_window, text='Exit', command=lambda: self.top.destroy())
button_close.pack()
def print_slide_value(self, slider_value):
print slider_value
gui = GUI()
gui.mainloop()
答案 0 :(得分:2)
使用命令参数时,必须向其传递对可调用对象的引用。事件后将调用的函数。你正在做的是你从self.print_slide_value(slider.get())
传递None
的结果。
取而代之的是:
def print_slide_value():
print slider.get()
button_cheat = tki.Button(slider_window, text='Print Value', command=print_slide_value)
我也没有遇到任何问题:
slider = tki.Scale(slider_window, from_=100, to=1000, orient=tki.HORIZONTAL)