Python Tkinter会自动打开我的文件
我制作了一个GUI应用程序,你可以在其中打开一个文件,然后你可以在上面计算一些东西(从主函数)。但是,当我运行这个程序时,它会自动打开我选择的文件并运行main()函数,即使我还没有命令它。以下是目前代码的相关部分:Python Tkinter会自动打开我的文件,python,tkinter,Python,Tkinter,我制作了一个GUI应用程序,你可以在其中打开一个文件,然后你可以在上面计算一些东西(从主函数)。但是,当我运行这个程序时,它会自动打开我选择的文件并运行main()函数,即使我还没有命令它。以下是目前代码的相关部分: from Tkinter import * import tkFileDialog import tkMessageBox import math import re class App(object): def __init__(self, master):
from Tkinter import *
import tkFileDialog
import tkMessageBox
import math
import re
class App(object):
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.text = Text()
self.text.pack()
menu = Menu(master)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="Open File", command=self.OpenFile)
filemenu.add_command(label="Save File As", command=self.SaveFile)
processmenu = Menu(menu)
menu.add_cascade(label="Calculate", menu=processmenu)
processmenu.add_cascade(label="Process the Input File", command = main())
helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu =helpmenu)
helpmenu.add_command(label="About", command=self.about)
exitmenu = Menu(menu)
menu.add_cascade(label="Quit", menu=exitmenu)
exitmenu.add_command(label="Quit", command=self.quit)
def about(self):
tkMessageBox.showinfo( "About", "Lot Data Calculator v.01"\
"\n Made by Michael Hander."\
"\n Contact him at http://www.twitter.com/sludgehander."\
"\n All Rights Reserved. 2015")
def OpenFile(self):
infile = tkFileDialog.askopenfile()
text = infile.read()
if text != None:
self.text.delete(0.0, END)
self.text.insert(END,text)
def SaveFile(self):
outputfile = tkFileDialog.asksaveasfile()
savethetext = str(self.text.get(0.0,END))
outputfile.write(savethetext)
outputfile.close()
def quit(self):
root.destroy()
def main():
infile = tkFileDialog.askopenfile()
#algorithms to solve the input file
我的计划是打开程序,然后打开文件,然后输入显示在下面的小部件上。我已经做到了,除了当我运行程序时,它不会显示菜单,而是立即显示一个打开文件对话框。我试着把main()放在进程菜单的命令中,但是当我点击它时,什么也没发生。另外,在main()函数完成后,我应该使用save file(保存文件)菜单将其保存到一个新文件中,但我不知道如何放置生成的所有字符串
以下是整个函数。请看这段代码:
processmenu.add_cascade(..., command = main())
您要求python运行main
函数,它返回的是分配给命令
属性的内容
要删除括号,以便传递对函数的引用,而不是执行函数的结果:
processmenu.add_cascade(..., command = main)
我已经从main-in命令中删除了(),现在进程菜单开始工作了!谢谢GUI仍然有很多bug,我不知道如何修复