【发布时间】:2021-02-25 06:39:58
【问题描述】:
Python tkinter askopenfilename() 没有打开和响应。我搜索并尝试了所有方法,但没有成功。
怎么了?
代码:
from tkinter.filedialog import askopenfilenames
import pygame, keyboard, time
import tkinter as tk
from tkinter.filedialog import askopenfilename
from pygame import key
pygame.init()
pygame.mixer.init()
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 450
BLACK = (0, 0, 0)
pyscreen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT), pygame.RESIZABLE)
def play():
tkscreen = tk.Tk()
tkscreen.iconbitmap("void.ico")
tkscreen.title("Select music file...")
print("b")
global music
tkscreen.update()
music = askopenfilename() # Not responding!!
tkscreen.update()
print("c")
try:
pygame.mixer.music.load(music)
print("d")
pygame.mixer.music.play()
print("e")
except:
print("e-1")
print(f"{music} is not a music file. ")
print("a")
play()
pausecooldown = True
paused = False
while True:
if keyboard.is_pressed("f9"):
if keyboard.is_pressed("space") and pausecooldown:
if paused:
pygame.mixer.music.unpause()
paused = False
time.sleep(0.1)
pausecooldown = False
elif not paused:
pygame.mixer.music.pause()
paused = True
time.sleep(0.1)
pausecooldown = False
pausecooldown = True
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
exit()
版本:Python 3.9.1
操作系统:Windows 10 家庭版
打印“b”,打开 tkinter 和 pygame 窗口,但“选择文件”窗口没有打开,tkinter 和 pygame 窗口没有响应。
【问题讨论】:
-
每个 tkinter 实例都需要一个
mainloop()方法来运行。这种方法本质上是监控应用程序发生的事情并对用户输入做出反应。没有它,Tkinter 就无法工作。您可以在第一个try块之前添加tkscreen.mainloop(),它应该有望解决问题。
标签: python python-3.x tkinter