python TKinter的主窗口运行程序完毕后,怎么让其自动关闭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python TKinter的主窗口运行程序完毕后,怎么让其自动关闭相关的知识,希望对你有一定的参考价值。

参考技术A

采用的是main函数对主窗口运行程序完毕自动关闭的命令:

from tkinter import *def main():

root = Tk()

b = Button(root, text='退出', command=root.quit)

b.pack()

mainloop()if __name__ == '__main__':

main()

扩展资料:

main函数的应用:

程序执行的出发点,main,是相对而言的,正如语音学理论关注的是泛音,泛音是程序中main以外的功能,产生泛音是为了迎合思维方式而不是某种模式。有主次之分,对其实现进行了详细的分析,既可以模块化程序,又可以实现一个封闭的整体。

模块化编程方法是将整个程序划分成几个功能单一的程序模块,然后分别实现,最后,所有程序模块都像积木一样组装起来。

利用函数实现程序的模块化,大大减少了编码工作量,在函数或复合语句块中定义的自动类型变量称为局部变量。

局部变量的作用域从局部变量定义的位置开始,一直到该函数或复合语句的结尾,局部变量存活时间短。调用局部变量的函数时,将分配局部变量的内存空间,函数调用后,释放局部变量的内存空间。

函数参数和参数属于局部变量,调用函数时,将分配参数内存空间,函数调用后,参数内存空间被释放,C语言函数参数传递可分为三种情况:简单变量作为函数参数,数组名作为函数参数,指针作为函数参数。

参考资料来源:

百度百科-main函数

Python 程序在 PyCharm 中运行后,Tkinter 窗口自动关闭

【中文标题】Python 程序在 PyCharm 中运行后,Tkinter 窗口自动关闭【英文标题】:Tkinter window closes automatically after Python program has run in PyCharm 【发布时间】:2015-02-22 14:08:33 【问题描述】:

我正在使用 PyCharm 编写一个小型 Python 游戏。我正在使用 Python 3.4 版的 Macbook 上执行此操作。 游戏会打开一个 Tkinter 窗口并向其中添加一些内容。 但是,在运行游戏时,它会非常短暂地显示并立即关闭。

我在 *** 上找到了一些提示,可以在游戏结束时添加输入(“按下关闭窗口”)。确实,这确保了窗口不会立即关闭,但对于游戏来说并不实用。在游戏中,用户需要使用自己的方向键来玩。因此,在这种情况下,添加 input(...) 没有用。如何防止窗口自动关闭?谢谢!

代码下方:

from tkinter import *

# Scherm maken
HEIGHT = 500
WIDTH = 800
window = Tk()
window.title('Bellenschieter')
c = Canvas(window,width=WIDTH, height=HEIGHT, bg='darkblue')
c.pack()



# Duikboot maken
ship_id = c.create_polygon(5,5,5,25,30,15,fill='red')
ship_id2 = c.create_oval(0,0,30,30,outline='red')
SHIP_R = 15
MID_X = WIDTH/2
MID_Y = HEIGHT/2
c.move(ship_id, MID_X, MID_Y)
c.move(ship_id2, MID_X, MID_Y)

# Duikboot besturen
SHIP_SPD = 10
def move_ship(event):
    if event.keysym == 'Up':
        c.move(ship_id, 0, -SHIP_SPD)
        c.move(ship_id2, 0, -SHIP_SPD)
    elif event.keysym == 'Down':
        c.move(ship_id, 0, SHIP_SPD)
        c.move(ship_id2, 0, SHIP_SPD)
    elif event.keysym == 'Left':
        c.move(ship_id, -SHIP_SPD, 0)
        c.move(ship_id2, -SHIP_SPD, 0)
    elif event.keysym == 'Right':
        c.move(ship_id, SHIP_SPD, 0)
        c.move(ship_id2, SHIP_SPD, 0)
c.bind_all('<Key>', move_ship)

window.update()

input('Press <Enter> to end the program')

【问题讨论】:

您好像投了两次票;实际上没有投票;) 【参考方案1】:

在设置小部件、事件处理程序后启动事件循环。

# input('Press <Enter> to end the program')  # (X)
window.mainloop()  # OR mainloop()

删除对input的调用。

【讨论】:

... 并删除对input的调用 @BryanOakley,是的。这就是为什么我用input 评论了这一行。我明确删除了对input 的调用。感谢您的评论。

以上是关于python TKinter的主窗口运行程序完毕后,怎么让其自动关闭的主要内容,如果未能解决你的问题,请参考以下文章

python的tkinter运行不了

在 Python Tkinter 中,如何在 mainloop 窗口打开后运行代码? [复制]

激活 Tkinter 顶层

python tkinter 防止重复打开相同的窗口?

python程序的窗口化

如何在不使用 tkinter 打开控制台窗口的情况下运行 Python 脚本?