Python:TKinter无法调用“frame”命令:应用程序已被破坏

时间:2017-11-12 14:05:18

标签: python tkinter

我正在尝试建立一个由4个框组成的UI,它取决于主窗口。在每个框架中,都会有一个按钮。每个框架都有一个必须出现的标题/标签。

窗口上有一个图像背景,我的目标是编码,使帧背景透明(或黑色。这并不重要)。

我的问题是,虽然mainWindow显得很流畅,但程序似乎无法创建框架。在运行之前我没有错误,但在关闭它之后没有错误。

我已经阅读了许多不同的答案,关于必须让我的标签可以使用母版(并且据我所知,它是)。

    from tkinter import *
    top = Tk()

    mainWindow = Canvas(top, bg = "blue", height = 500, width = 600)
    filename = PhotoImage(file="C:\matrix.png")
    background_label = Label(top, image=filename)
    background_label.place(x=0, y=0, relwidth=1, relheight=1)

    mainWindow.pack()
    top.mainloop()


    # fenêtre load Key
    KeyFrame = Frame(mainWindow, borderwidth = 2, relief = SUNKEN)
    KeyFrame.pack(side = LEFT, padx = 30, pady = 30)

    # fenêtre load Fichier
    FileFrame = Frame(mainWindow, borderwidth = 2, relief = SUNKEN)
    FileFrame.pack(side = RIGHT, padx = 10, pady = 10)

    # Labels
    KeyLabel = Label(KeyFrame, text = "Choix de la matrice...",  bg = "black").pack(fill = BOTH, expand = "YES")
    FileLabel = Label(FileFrame, text = "Choix de la fichier...", bg = "black").pack(fill = BOTH, expand = "YES")

这是我关闭程序时可以看到的错误:

Traceback (most recent call last):
  File "PATH", line 15, in <module>
    KeyFrame = Frame(mainWindow, borderwidth = 2, relief = SUNKEN)

  File "PATH", line 2738, in __init__
    Widget.__init__(self, master, 'frame', cnf, {}, extra)

  File "PATH", line 2293, in __init__
    (widgetName, self._w) + extra + self._options(cnf))

_tkinter.TclError: can't invoke "frame" command: application has been destroyed

2 个答案:

答案 0 :(得分:1)

在创建所有小部件后,应将PreparedStatement称为。因为只要窗口打开,脚本就不会在top.mainloop()之后运行任何行。尝试将它放在最后。

答案 1 :(得分:0)

top.mainloop()移动到程序的最后,因为python程序的执行在那里停止,并且该行下面的任何内容都不能执行。