[英]TopLevel window disappears when using askopenfilename, from tkinter.filedialog
[英]Can't drag window in pygame after closing tkinter.filedialog
from tkinter import filedialog import tkinter as tk import pygame as pg def openf(): root = tk.Tk() root.wm_attributes('-topmost', 1) root.withdraw() file = filedialog.askopenfile(filetypes=[("Text file", "*.txt")], defaultextension=[("Text file", "*.txt")]) return file.name def main(): pg.init() fname="File" screen=pg.display.set_mode((400,400)) going=True font=pg.font.Font(pg.font.get_default_font(),30) txt=font.render(fname,True,(255,255,255)) press = 0 while going: posx,posy=pg.mouse.get_pos() for event in pg.event.get(): if pg.QUIT==event.type: going=False elif event.type == pg.MOUSEBUTTONDOWN: press=event.button if(press==3): fname=openf() txt = font.render(fname, True, (255, 255, 255)) print(fname) press=0 screen.fill((255,100,234)) text = font.render("x = " + str(posx) + "y = " + str(posy), True, (255, 255, 255)) screen.blit(text, (100, 200)) screen.blit(txt,(100,100)) pg.display.flip() if __name__ == '__main__': main()
只是为了注意,在执行此操作之前,如果鼠标在主 window 之外和上栏中,则程序不会获取 x 和 y 的坐标,但在调用 filedialog 之后,它会获取坐标
程序图片:: https://drive.google.com/file/d/17tQSVmzUvwEyB_jXVxFQ-6BAm_NwS82m/view?usp=sharing
我还注意到您的代码在对话框关闭并单击 window 后,您的应用程序会捕获整个屏幕的鼠标。 我可以单击任意位置,对话框将再次打开。 可能是 tkinter 问题。
经过反复试验,看起来您只需要在使用 tkinter 后重置您的 pygame 屏幕。 这将重置您的鼠标。
if(press==3):
fname=openf() # open file dialog (tkinter)
screen=pg.display.set_mode((400,400)) # reset pygame screen
txt = font.render(fname, True, (255, 255, 255))
print(fname)
press=0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.