【问题标题】:How do I make a pop up in Tkinter when a button is clicked?单击按钮时如何在 Tkinter 中弹出?
【发布时间】:2013-06-23 13:07:43
【问题描述】:

单击按钮时如何在 Tkinter 中弹出窗口?单击“关于”按钮时,我想要一个带有免责声明+关于文本的弹出窗口。

我试图设置一个 def 方法,但它一定是非常错误的,因为它没有按我的意愿工作。任何帮助将不胜感激。

谢谢

import sys
from Tkinter import *

def clickAbout(): 
    name = ("Thanks for the click")
    return

app = Tk()
app.title("SPIES")
app.geometry("500x300+200+200")

labelText = StringVar()
labelText.set ("Please browse to the directory you wish to scan")


labelText2 = StringVar()
labelText2.set ("About \n \n \
SPIES will search your chosen directory for photographs containing \n \
GPS information. SPIES will then plot the co-ordinates on Google \n \
maps so you can see where each photograph was taken.")

labelText3 = StringVar()
labelText3.set ("\n Disclaimer \n \n \
Simon's Portable iPhone Exif-extraction Software (SPIES) \n \
software was made by Simon. This software \n \
comes with no guarantee. Use at your own risk")

label1 = Label(app, textvariable=labelText, height=0, width=100)
label1.pack()

label1 = Label(app, textvariable=labelText2, height=0, width=100)
label1.pack()

label = Label(app, textvariable=labelText3, height=0, width=100)
label.pack()

b = Button(app, text="Quit", width=20, command=app.destroy)
b.pack(side='bottom',padx=0,pady=0)

button1 = Button(app, text="About SPIES", width=20, command=clickAbout)
button1.pack(side='bottom',padx=5,pady=5)

app.mainloop()

【问题讨论】:

    标签: python popup tkinter


    【解决方案1】:

    如果您想在新窗口上显示文本,则创建一个 Toplevel 小部件并将其用作关于文本和免责声明标签的父级。

    顺便说一句,如果您有静态文本,则不需要 Tkinter 变量,因此在这种情况下,您可以简单地摆脱它们并用多行字符串替换它们:

    import sys
    from Tkinter import *
    
    ABOUT_TEXT = """About
    
    SPIES will search your chosen directory for photographs containing
    GPS information. SPIES will then plot the co-ordinates on Google
    maps so you can see where each photograph was taken."""
    
    DISCLAIMER = """
    Disclaimer
    
    Simon's Portable iPhone Exif-extraction Software (SPIES)
    software was made by Simon. This software
    comes with no guarantee. Use at your own risk"""
    
    def clickAbout():
        toplevel = Toplevel()
        label1 = Label(toplevel, text=ABOUT_TEXT, height=0, width=100)
        label1.pack()
        label2 = Label(toplevel, text=DISCLAIMER, height=0, width=100)
        label2.pack()
    
    
    app = Tk()
    app.title("SPIES")
    app.geometry("500x300+200+200")
    
    label = Label(app, text="Please browse to the directory you wish to scan", height=0, width=100)
    b = Button(app, text="Quit", width=20, command=app.destroy)
    button1 = Button(app, text="About SPIES", width=20, command=clickAbout)
    label.pack()
    b.pack(side='bottom',padx=0,pady=0)
    button1.pack(side='bottom',padx=5,pady=5)
    
    app.mainloop()
    

    【讨论】:

    • 谢谢,帮了大忙
    • @Bob:您可能希望在clickAbout() 函数的末尾添加一个toplevel.focus_force() 来激活新窗口(大多数应用程序中的工作方式都是这样)。
    • 这对我也很有帮助。但是,不需要 import sys。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多