我正在尝试使用pygame在python中创建一个简单的绘图程序。 我希望用户使用tkColorChooser.askcolor选择颜色。 用户按b时弹出对话框。当用户选择颜色时,它工作正常。但是如果用户在askcolor窗口中按下Cancel,程序将继续运行,但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()
答案 0 :(得分:0)
您似乎做错了一件事是您没有通过调用root.mainloop()
来启动事件循环。不管这是不是实际问题,我不知道。但是,如果没有事件循环运行,Tkinter就无法工作,所以你得到奇怪的行为并不奇怪。