2013-06-23 18 views
8

Jak utworzyć wyskakujące okienko w aplikacji Tkinter po kliknięciu przycisku? Po kliknięciu przycisku "Informacje" chcę wyświetlić wyskakujące okienko z informacją o tekście.Jak utworzyć wyskakujące okienko w aplikacji Tkinter po kliknięciu przycisku?

Próbowałem ustawić metodę def, ale musi być bardzo źle, ponieważ nie działa tak, jak bym chciał. Każda pomoc będzie bardzo doceniana.

Dziękuję

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() 

Odpowiedz

14

Jeśli chcesz wyświetlać tekst na nowym oknie, a następnie utworzyć Toplevel widget i używać go jako rodzica z etykietami do tekstu oi zrzeczenie.

Nawiasem mówiąc, zmienne tkinter nie są konieczne, jeśli masz tekst statyczny, a więc w tym przypadku można po prostu się ich pozbyć i zastąpić je multilinii strun:

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() 
+0

Dziękuję, że był wielki help –

+1

@Bob: Możesz dodać 'toplevel.focus_force()' na końcu funkcji 'clickObout()', aby aktywować nowe okno (jak to działa w większości aplikacji). – martineau