2010-10-15 95 views
2

当按下按钮时有没有办法返回一些东西?Python Tkinter返回

这是我的示例程序。简单的文件阅读器。由于我无法返回内容,全局变量是否需要保留文本内容?

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

返回*谁*? – delnan 2010-10-15 15:08:49

+0

所以基本上你只是使用全局变量来写东西?例如使用一个filedialog,如果我想要选择的路径,我只是将它保存到一个全局变量/ – shawn 2010-10-15 15:23:04

+0

你只是间接地自己回答它:“...使用一个filedialog,如果我想要选择的路径......”。你已经在'filename = tkFileDialog.askopenfilename()'中做到了。那么,['tkFileDialog.askopenfilename'](http://svn.python.org/view/python/trunk/Lib/lib-tk/tkFileDialog.py?revision=64257&view=markup)是如何做到的? – tzot 2010-10-15 18:57:13

回答

0

如果你的意思是信号反馈给用户,这里的一些示例代码:

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

和源:Python - Tkinter Button tutorial

+0

在顶部发布代码 – shawn 2010-10-15 15:28:10