2015. 5. 23. 16:24
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

from tkinter import *
from tkinter import ttk

root=Tk()

h=ttk.Scrollbar(root, orient=HORIZONTAL)
v=ttk.Scrollbar(root, orient=VERTICAL)
canvas=Canvas(root, scrollregion=(0,0,1000,1000), yscrollcommand=v.set, xscrollcommand=h.set)
h['command']=canvas.xview
v['command']=canvas.yview
ttk.Sizegrip(root).grid(column=1, row=1, sticky=(S,E))

canvas.grid(column=0, row=0, sticky=(N,W,E,S))
h.grid(column=0, row=1, sticky=(W,E))
v.grid(column=1, row=0, sticky=(N,S))
root.grid_columnconfigure(0,weight=1)
root.grid_rowconfigure(0,weight=1)

lastx, lasty=0,0

def xy(event):
    global lastx, lasty
    lastx, lasty=canvas.canvasx(event.x), canvas.canvasy(event.y)

def setColor(newcolor):
    global color
    color=newcolor
    canvas.dtag('all', 'paletteSelected')
    canvas.itemconfigure('palette', outline='white')
    canvas.addtag('paletteSelected', 'withtag','palette%s' % color)
    canvas.itemconfigure('paletteSelected',outline='#999999')

def addLine(event):
    global lastx, lasty
    x,y=canvas.canvasx(event.x), canvas.canvasy(event.y)
    canvas.create_line((lastx, lasty, x, y ), fill=color, width=5, tags='currentline')
    lastx, lasty=x,y

def doneStroke(event):
    canvas.itemconfigure('currentline', width=1)

canvas.bind("<Button-1>",xy)
canvas.bind("<B1-Motion>",addLine)
canvas.bind("<B1-ButtonRelease>", doneStroke)

id=canvas.create_rectangle((10,10,30,30), fill="red", tags=('palette', 'palettered'))
canvas.tag_bind(id, "<Button-1>", lambda x:setColor("red"))
id=canvas.create_rectangle((10,35,30,55), fill="blue", tags=('palette', 'paletteblue'))
canvas.tag_bind(id, "<Button-1>", lambda x: setColor("blue"))
id=canvas.create_rectangle((10,60,30,80),fill="black", tags=('palette', 'paletteblack','paletteSelected'))
canvas.tag_bind(id, "<Button-1>", lambda x: setColor("black"))

setColor('black')
canvas.itemconfigure('palette', width=5)
root.mainloop()

'Python > tkinter' 카테고리의 다른 글

Menu(), status bar and toolbar  (0) 2015.05.06
using class  (0) 2015.05.06
event  (0) 2015.05.06
name, password  (0) 2015.05.06
Posted by af334