1

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

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

1 回答 1

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)
于 2013-03-30T20:21:17.347 回答