tkColorChooser.askcolor窗口在用户按取消时不关闭
我正在用Python和pygame制作一个简单的绘图程序。
我希望用户能选择颜色,使用tkColorChooser.askcolor这个工具。
当用户按下“b”键时,会弹出一个对话框。用户选择颜色时一切正常。但是如果用户在askcolor窗口中按下“取消”按钮,程序会继续运行,但askcolor窗口却不会关闭。
这个窗口会一直停留在其他窗口的上面,取消按钮也会保持被按下的状态。
我哪里做错了呢?
我在这里贴出一个简化的代码,问题就出现在这里。
我是在Linux Ubuntu 11.10上运行的,使用的是Python 2.7.2+和python-pygame 1.9.1release-0ubuntu4。
谢谢大家!!
#! /usr/bin/env python
import pygame
from Tkinter import *
import tkColorChooser
def main():
# Colors
black = (0,0,0)
yellow = (252, 229, 3)
bgcolor = black
picturecolor = yellow
running = 1
# Initiate the screen
screen = pygame.display.set_mode((0, 0), pygame.RESIZABLE)
screen.fill(bgcolor)
pygame.draw.circle(screen, picturecolor, (200,200), 10, 0)
pygame.display.flip()
# Initiates the Tk
root = Tk()
root.withdraw()
while running:
event = pygame.event.poll()
if event.type == pygame.KEYUP:
if event.key == pygame.K_b:
ctuple,cstr = tkColorChooser.askcolor(initialcolor=bgcolor, title = 'Choose picture color')
if ctuple != None:
picturecolor = ctuple
screen.fill(bgcolor)
pygame.draw.circle(screen, picturecolor, (200,200), 10, 0)
pygame.display.flip()
if event.key == pygame.K_x:
running = 0
if event.type == pygame.QUIT:
running = 0
if __name__=="__main__":
main()
1 个回答
0
你似乎有一个地方做错了,就是没有通过调用 root.mainloop()
来启动事件循环。不知道这是不是你遇到问题的真正原因。不过,Tkinter这个库是需要事件循环在运行的,如果没有启动这个循环,出现奇怪的行为也是很正常的。