shawn
shawn

Reputation: 341

Python Tkinter Return

Is there a way to return something when a button is pressed?

Here is my sample program. a simple file reader. Is the global variable to hold text contents the way to go since I can't return the contents?

from Tkinter import *
import tkFileDialog

textcontents = ''

def onopen():
    filename = tkFileDialog.askopenfilename()
    read(filename)

def onclose():
    root.destroy()

def read(file):
    global textcontents
    f = open(file, 'r')

    textcontents = f.readlines()
    text.insert(END, textcontents)

root = Tk()
root.title('Text Reader')
frame = Frame(root)
frame.pack()
text = Text(frame, width=40, height=20)
text.pack()
text.insert(END, textcontents)

menu = Menu(root)
root.config(menu=menu)

filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="Open...", command=onopen)
filemenu.add_command(label="Exit", command=onclose)

mainloop()

Upvotes: 3

Views: 3860

Answers (2)

mykhal
mykhal

Reputation: 19915

Tk(inter) is event-based, which means, that you do not return values, but bind callbacks (functions) to actions.

more info here: http://effbot.org/tkinterbook/button.htm

Upvotes: 1

Michael Goldshteyn
Michael Goldshteyn

Reputation: 74390

If you meant signal back to the user, here's some sample code:

import Tkinter
import tkMessageBox

top = Tkinter.Tk()

def helloCallBack():
   tkMessageBox.showinfo( "Hello Python", "Hello World")

B = Tkinter.Button(top, text ="Hello", command = helloCallBack)

B.pack()
top.mainloop()

and the source: Python - Tkinter Button tutorial

Upvotes: 0

Related Questions