[英]How to destroy a pygubu window after app.run()?
我開始使用 python 和 pygubu 制作一些東西(IDK)。 首先,我一直在探索你可以用 pygubu 做什么。 我遇到了一個問題,但是我不知道如何解決。 我的問題是我無法銷毀 window。 我努力了:
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 ,我將 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 銷毀 window? 注意:關閉 window 后出現錯誤。 我將不勝感激任何幫助。 我試過這個鏈接,但它沒有幫助。
編輯:
現在我知道在app.run()
之后 window 停止工作/關閉,但你如何讓它消失(如 tkinter destroy()
函數)?
感謝@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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.