Python 程序在 PyCharm 中运行后,Tkinter 窗口自动关闭
Posted
技术标签:
【中文标题】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 程序在 PyCharm 中运行后,Tkinter 窗口自动关闭的主要内容,如果未能解决你的问题,请参考以下文章
错误记录PyCharm 运行 Python 程序报错 ( UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe5 in positio )(代
python webdriver 报错WebDriverException: Message: can't access dead object的原因(pycharm中)