如何根据python上tkinter中的用户输入生成弹出消息?

时间:2017-12-25 01:07:06

标签: python loops tkinter popupwindow

我正在尝试创建一个系统,其中用户可以使用两个滑块输入当前温度和所需温度。当按下"Set"按钮确认两个温度时,应根据用户输入显示一条弹出消息。

  • 如果所需温度高于当前温度, 此弹出消息应显示:"Turn the heater on?"
  • 如果所需温度低于当前温度, 此弹出消息应显示:“Turn the cooler on?"

我试图制作这个但是我的代码似乎没有点击"Set"按钮产生任何东西。任何帮助将非常感激!

class StartPage(tk.Frame):

    def __init__(self, parent, controller):

        tk.Frame.__init__(self, parent)

        label1=ttk.Label(self,text="Smart Thermostat",font=LARGE_FONT)
        label1.pack(pady=10, padx=10)

        label2 = ttk.Label(self, text="Current Temperature:",font=MEDIUM_FONT)
        label2.pack(pady=10, padx=10)

        slider1 = tk.Scale(self, from_=10, to = 30, orient=HORIZONTAL)
        slider1.pack()

        label3 = ttk.Label(self, text="Set to:",font=MEDIUM_FONT)
        label3.pack(pady=10, padx=10)

        slider2 = tk.Scale(self, from_=18, to = 25, orient=HORIZONTAL)
        slider2.pack()

        def popupmsg1(msg):
            popup1=tk.Tk()
            popup1.wm_title("!")
            label4 = ttk.Label(popup1, text="Turn heater on?", font = MEDIUM_FONT)
            label4.pack(side = "top", fill = "x", pady=10)
            button2=ttk.Button(popup1, text="Okay", command = popup1.destroy)
            button2.pack()
            popup1.mainloop()

        def popupmsg2(msg):
            popup2=tk.Tk()
            popup2.wm_title("!")
            label5 = ttk.Label(popup2, text="Turn cooler on?", font = MEDIUM_FONT)
            label5.pack(side = "top", fill = "x", pady=10)
            button3=ttk.Button(popup2, text="Okay", command = popup2.destroy)
            button3.pack()
            popup2.mainloop()    

        def popupmsg():
            temp=int(slider2.get())
            need=int(slider1.get())
            if temp<need:
                popup1=tk.Tk()
            else:
                popup2=tk.Tk()


        button1=tk.Button(self, text="Set", command= lambda: popupmsg)
        button1.pack(pady=10, padx=10)

1 个答案:

答案 0 :(得分:2)

您应该可以使用以下信息创建消息/对话框:

 # Python 3
 from tkinter import messagebox

 # Python 2
 import tkMessageBox as messagebox

 if case 1:
      messagebox.showinfo("title 1", "message 1")
 else:
      messagebox.showinfo("title 2", "message 2")

您通常只为真正自定义信息框/窗口生成自定义窗口,这些信息框/窗口都有自己的逻辑。对于简单消息,只需使用内置消息框即可。即使这样,您也应该使用Toplevel而不是产生全新的tk.Tk实例。 Tk只是一个大的主循环(因此使用.mainloop()....)来处理其中的事件。

如何选择向用户显示消息是非常开放的,您甚至可以创建一个标签来更新文本并显示/隐藏它等等。

如果你想做它看起来像的自定义字体......而不需要挖掘你所有的代码......你实际上必须去Toplevel / widget路线。