tkinter吧 关注:129贴子:366
  • 1回复贴,共1

求助下列代码中如何获取colourbutton调用的函数返回值

只看楼主收藏回复

from tkinter import *
from tkinter import colorchooser
k = 'red'
root = Tk()
w = Canvas(root,width = 800,height = 600,background = 'yellow')
w.grid(row = 0, columnspan = 2, pady = 5)
def setcolour():
fileName = colorchooser.askcolor()
return fileName
colourbutton = Button(root, text="选择颜色", command = setcolour)
colourbutton.grid(row = 1, column = 1)
w.bind('<B1-Motion>', lambda event:paint(event, k))
Label(root, text = '按住鼠标左键并移动,开始绘制你的理想蓝图吧............').grid(row = 2, columnspan = 2, pady = 5)
Button(root,text = 'DELETE ALL', command = (lambda x = ALL:w.delete(x))).grid(row = 1)
i = setcolour()
if i[1] == '#ffffff':
k = "white"
elif i[1] == '#000000':
k = "black"
elif i[1] == '#ff0000':
k = "red"
elif i[1] == '#00ff00':
k = "green"
elif i[1] == '#0000ff':
k = "blue"
elif i[1] == '#800080':
k = "purple"
elif i[1] == '#ff80ff':
k = "pink"
elif i[1] == '#ff8000':
k = "orange"
elif i[1] == '#c0c0c0':
k = "silver"
elif i[1] == '#804000':
k = "brown"
else:
print("对不起,该程序暂不支持您选择的颜色哦,请重试")
k = ''
def paint(event, colour = 'red'):
x1,y1 = (event.x - 3), (event.y - 3)
x2,y2 = (event.x + 3),(event.y + 3)
w.create_oval(x1, y1, x2, y2, fill = colour, outline = colour)
mainloop()


1楼2020-08-29 10:06回复
    不能直接取得返回值, 所以应把设置k值的代码放在函数setcolour内
    新的代码 :
    from tkinter import *
    from tkinter import colorchooser
    k = 'red'
    root = Tk()
    w = Canvas(root,width = 800,height = 600,background = 'yellow')
    w.grid(row = 0, columnspan = 2, pady = 5)
    def setcolour():
    global k
    i = colorchooser.askcolor()
    if i[1] == '#ffffff':
    k = "white"
    elif i[1] == '#000000':
    k = "black"
    elif i[1] == '#ff0000':
    k = "red"
    elif i[1] == '#00ff00':
    k = "green"
    elif i[1] == '#0000ff':
    k = "blue"
    elif i[1] == '#800080':
    k = "purple"
    elif i[1] == '#ff80ff':
    k = "pink"
    elif i[1] == '#ff8000':
    k = "orange"
    elif i[1] == '#c0c0c0':
    k = "silver"
    elif i[1] == '#804000':
    k = "brown"
    else:
    print("对不起,该程序暂不支持您选择的颜色哦,请重试")
    k = ''
    colourbutton = Button(root, text="选择颜色", command = setcolour)
    colourbutton.grid(row = 1, column = 1)
    w.bind('<B1-Motion>', lambda event:paint(event, k))
    Label(root, text = '按住鼠标左键并移动,开始绘制你的理想蓝图吧............').grid(row = 2, columnspan = 2, pady = 5)
    Button(root,text = 'DELETE ALL', command = (lambda x = ALL:w.delete(x))).grid(row = 1)
    def paint(event, colour = 'red'):
    x1,y1 = (event.x - 3), (event.y - 3)
    x2,y2 = (event.x + 3),(event.y + 3)
    w.create_oval(x1, y1, x2, y2, fill = k, outline = k)
    mainloop()


    IP属地:广东2楼2020-08-29 13:21
    回复