【问题标题】:Python tkinter askopenfilename() not opening and respondingPython tkinter askopenfilename() 没有打开和响应
【发布时间】: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


【解决方案1】:

我知道并且可以理解您的问题。

我曾经做过一个 Tkinter 项目。好吧,没有更好的解决方案。但无论如何我都可以帮助你。


我有两个解决方案想与你分享。

1.使用调试器 当我刚刚编辑我的程序时,我将这个解决方案用于程序。如果你使用像 VS Code 或 Pycharm 这样的 IDE。在调试器模式下运行代码。该程序将运行并做出响应。

它会按需要工作。

2。使用项目的.exe文件 使用此链接了解如何执行此操作。它只会让您的 python 程序作为应用程序运行,并且在我这样做时,您提到的问题没有出现。

https://datatofish.com/executable-pyinstaller/


如果您仍然有任何问题,请在下面发表评论并提出您想要的任何问题。

【讨论】:

    【解决方案2】:

    我找到了答案:

    每个 tkinter 实例都需要运行 mainloop() 方法。这种方法本质上 监控应用程序发生的事情并对用户输入做出反应。没有它,Tkinter 只是行不通。您可以在第一个尝试块之前添加tkscreen.mainloop(),然后 它应该有望解决问题。

    来自上述评论(pavel

    【讨论】:

      猜你喜欢
      • 2019-01-10
      • 2019-12-29
      • 2018-12-06
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      相关资源
      最近更新 更多