Returning A Value After Calling A Function With A Button In Tkinter
from Tkinter import * from tkFileDialog import askopenfilename from PIL import Image def main(): filename = askopenfilename(filetypes=[('Jpeg','*.jpg')]) return filename root =
Solution 1:
If you use the class based approach to Tk applications, instead of returning values from event handlers, you can assign them to instance variables. This the best approach, as function-based GUI applications don't scale well precisely because the need to place stuff at module scope.
from Tkinter import *
classApplication(Frame):
defmain(self):
self.filename = askopenfilename(filetypes=[("Jpeg","*.jpg")])
defcreateWidgets(self):
self.button = Button(root,text="Open",command=self.main)
self.button.pack()
def__init__(self, master=None):
Frame.__init__(self, master)
self.filename = None
self.pack()
self.createWidgets()
root = Tk()
root.title("Image Manipulation Program")
app = Application(master=root)
app.mainloop()
Solution 2:
Generally, it is bad practice to use global variables to pass information around your program. However, if you really must do this, use a mutable data type (such as a list or a dict) as your global variable and change its contents from your callback function, main
.
returned_values = {} # Create an empty dict.defmain():
returned_values['filename'] = askopenfilename(filetypes=[("Jpeg","*.jpg")])
# returned_values['filename'] may now be accessed in the global scope.
If you intend to do this frequently, consider implementing your own class to pass information around.
Post a Comment for "Returning A Value After Calling A Function With A Button In Tkinter"