每当我点击我的应用程序上的保存按钮时,它会打开一个正常工作的保存对话框,并在我尝试关闭它时立即崩溃的tkinter窗口。这是我的代码以某种方式使随机窗口:
import tkFileDialog,pygame
pygame.init()
screen = pygame.display.set_mode((640,360))
pygame.display.set_caption("Idea Processor")
# code is cut here
try:
ideasetupfonts = pygame.font.SysFont("Ubuntu", 36, False, False)
except:
ideasetupfonts = pygame.font.SysFont("Arial", 36, False, False)
# TextNameToBlit = ideasetupfonts.render(" TEXT HERE ",1,(0,0,0))
Potato = True
ShowToolbar = True
newSaveFile = {"Hello World":(50,50)}
def SaveFile():
filename = tkFileDialog.asksaveasfilename(**{"title":"Save Idea...","defaultextension":".txt","filetypes":[("text files", ".txt")],})
if filename:
saveFile = open(filename, 'w')
print >>saveFile,newSaveFile
saveFile.close()
while Potato:
for event in pygame.event.get():
if event.type == pygame.QUIT:
Potato = False
screen.fill(white)
# and here
mousex,mousey = pygame.mouse.get_pos()
# SaveFile button
if mousex>=0 and mousex<=32 and mousey>=0 and mousey<=32 and pygame.mouse.get_pressed() == (True, False, False) and ShowToolbar:
SaveFile()
# and here
pygame.display.flip()
pygame.quit()
答案 0 :(得分:3)
该窗口是创建Tkinter小部件时创建的默认Tk元素,如果您尚未创建前一个小部件。发生这种情况是因为tkFileDialog
建立在Tkinter之上。我建议你自己创建该元素,并通过调用withdraw
方法隐藏它。
import Tkinter, tkFileDialog, pygame
root = Tkinter.Tk()
root.withdraw()
作为旁注,我看到你为Pygame循环命名了标志Potato
。我不知道它是如何与这个变量的实际使用相关联的,但我强烈建议你使用有意义的名称作为你的类,变量和模块。这里是an article from Object Mentor(这是优秀书籍“清洁代码”的一部分)专门用于命名,我希望你发现它很有用。