Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter会自动打开我的文件_Python_Tkinter - Fatal编程技术网

Python Tkinter会自动打开我的文件

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

我制作了一个GUI应用程序,你可以在其中打开一个文件,然后你可以在上面计算一些东西(从主函数)。但是,当我运行这个程序时,它会自动打开我选择的文件并运行main()函数,即使我还没有命令它。以下是目前代码的相关部分:

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,我不知道如何修复