从TkInter Slider +返回一个值,使滑块与类成为水平

时间:2013-03-30 19:35:54

标签: python slider tkinter

我在打印滑块的值时遇到问题。我在滑块下方创建了一个按钮来执行此操作,但在按下之前会打印,按下时不会打印。

我也有让滑块水平的问题。我知道它是“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()

1 个答案:

答案 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)