如何在app.run()之后销毁一个pygubu窗口?

问题描述 投票:0回答:1

我开始用python和pygubu做一些东西(IDK yet)。首先,我一直在探索你能用pygubu做什么。但是我遇到了一个问题,我不知道如何解决。我的问题是,我不能销毁一个窗口。我试过了。

import time
from time import sleep
import tkinter as tk
import pygubu

def func():
    time.sleep(2.8)
    app.destroy()


class HelloWorldApp:
    global app

    def __init__(self):

        #1: Create a builder
        self.builder = builder = pygubu.Builder()

        #2: Load an ui file
        builder.add_from_file('IDKyet.ui')

        #3: Create the mainwindow
        self.mainwindow = builder.get_object('window')

    def run(self):
        self.mainwindow.mainloop()


if __name__ == '__main__':
    app = HelloWorldApp()
    app.run()
    func()

但我得到了错误信息

Traceback (most recent call last):
  File "C:\Users\tom\Documents\python\In development\I Do Not Know (yet).py", line 42, in <module>
    func()
  File "C:\Users\tom\Documents\python\In development\I Do Not Know (yet).py", line 11, in func
    app.destroy()
AttributeError: 'HelloWorldApp' object has no attribute 'destroy'

所以我又试了一下

import time
from time import sleep
import tkinter as tk
import pygubu

def func():
    time.sleep(2.8)
    window.destroy()

class HelloWorldApp:
    global window

    def __init__(self):

        #1: Create a builder
        self.builder = builder = pygubu.Builder()

        #2: Load an ui file
        builder.add_from_file('IDKyet.ui')

        #3: Create the mainwindow
        self.mainwindow = builder.get_object('window')

    def run(self):
        self.mainwindow.mainloop()


if __name__ == '__main__':
    app = HelloWorldApp()
    app.run()
    func()

基本上,我把全局变量改成了调用 window 是我的父窗口,我把被破坏的窗口称为 window. 然而,我得到的错误。

Traceback (most recent call last):
  File "C:\Users\tom\Documents\python\In development\I Do Not Know (yet).py", line 42, in <module>
    func()
  File "C:\Users\tom\Documents\python\In development\I Do Not Know (yet).py", line 11, in func
    window.destroy()
NameError: name 'window' is not defined

尽管我已经做了 window 一个全局变量。我是pygubu的新手,需要得到所有的帮助。如何使用 pygubu 销毁一个窗口? 注意:在关闭窗口后会出现错误。 该错误出现在关闭窗口后。我将感谢任何帮助。我试过这个链接,但没有帮助。.

编辑。

现在我知道,在 app.run() 窗口停止工作关闭,但你如何使它消失(像tkinter destroy() 函数)?)

python tkinter destroy pygubu
1个回答
0
投票

感谢评论者 @stovfl.

加,前 app.run(), app.after(2800, window.destroy)

这意味着,我可以编辑我的代码,它将工作。

import time
from time import sleep
import tkinter as tk
import pygubu



class HelloWorldApp:
    global window

    def __init__(self):

        #1: Create a builder
        self.builder = builder = pygubu.Builder()

        #2: Load an ui file
        builder.add_from_file('IDKyet.ui')

        #3: Create the mainwindow
        self.mainwindow = builder.get_object('window')

    def run(self):
        self.mainwindow.mainloop()


if __name__ == '__main__':
    app = HelloWorldApp()
    app.after(2800, window.destroy)
    app.run()
© www.soinside.com 2019 - 2024. All rights reserved.