繁体   English   中英

Python GUI 编程和 Tkinter

[英]Python GUI Programming and Tkinter

我需要你的帮助。 我将在 canvas 上放置一个图像,并在其上使用点制作颜色研究程序但是,使用点对图像进行了凸起和着色,但没有实现使用 colorcoiser 或 askcolor 以流畅的方式改变颜色。 我应该如何以及在哪里修改这部分? 下面是我的代码:

from tkinter import *
from tkinter import Menu
import tkinter.font
from tkinter.colorchooser import *
from tkinter import messagebox
from tkinter import colorchooser
w = 300
h = 300

def menu_new(event=None):
    print("close")

def menu_close(event=None):
    print("Game Close!")
    window.destroy()
    window.quit()

def menu_pause(event=None):
    print("Game Pause!")
    global running
    running = False

def drawDot( event ):
   x1, y1 = ( event.x - 1 ), ( event.y - 1 )
   x2, y2 = ( event.x + 1 ), ( event.y + 1 )
   canvas.create_oval( x1, y1, x2, y2, fill="blue")
   canvas.colorchooser(fill())

window = Tk()
canvas  = Canvas(window, width=w, height=h)
canvas.pack(expand = YES, fill = BOTH)
canvas.bind( "<B1-Motion>", drawDot )
window.title("색칠 공부를 해보자!")
window.geometry("300x300+100+100")
window.resizable(False, False)

#canvas = tkinter.Canvas(window, relief="solid", bd=2)
#oval=canvas.create_oval(100, 200, 150, 250, fill="blue", width=3)


color = colorchooser.askcolor()
doraemon=tkinter.PhotoImage(file="doraemon.png")
canvas.create_image(20, 20, anchor=NW, image=doraemon)

message = Label( window, text = "마우스를 드래그하면 점들이 그려집니다." )
message.pack( side = BOTTOM )



menu = Menu(window)

#파일 메뉴 생성
file_menu = Menu(menu)
file_menu.add_command(label='GalagaGame')
file_menu.add_separator()
file_menu.add_command(label="New Game", accelerator="Ctrl+N", underline=0, 
command=menu_new)
file_menu.add_separator()
file_menu.add_command(label="Quit Game", accelerator="Ctrl+Q", underline=0, command=menu_close)
file_menu.add_separator()
file_menu.add_command(label="Pause Game", accelerator="Pause", underline=0, command=menu_pause)
menu.add_cascade(label='About Game', menu=file_menu)

#헬프 메뉴 생성
help_menu = Menu(menu)
help_menu.add_command(label='Producer')
help_menu.add_separator()
help_menu.add_command(label='About')
menu.add_cascade(label='Help', menu=help_menu)

#이벤트 처리 부분
window.bind("<Control-n>", menu_new)
window.bind("<Control-q>", menu_close)
window.config(menu=menu)

window.mainloop()
window.config(menu=menu)

window.mainloop()

我假设您想使用colorchooser的选定颜色更改点的颜色。

您可以看到的第一件事是colorchooser返回((R,G,B),'hex')的元组,例如:

((255.99609375, 66.2578125, 66.2578125), '#ff4242')

因此,您可以将元组的最后一项传递给您的fill颜色:

def drawDot( event ):
    x1, y1 = ( event.x - 1 ), ( event.y - 1 )
    x2, y2 = ( event.x + 1 ), ( event.y + 1 )
    canvas.create_oval( x1, y1, x2, y2, fill=color[-1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM