求助,利用python中的tkinter,如何在画布中创建一个可以被选中的图案?
大家好。我现在想在画布(Canvas)上创建一个图案
(不一定是Canvas,别的也可以)
我的要求是这个图案能被选中,针对这个选中的图案,可以弹出右键menu等等
可以针对选中的图案,做进一步的操作
但是我用Canvas的话,只能画出图案,没有办法选中。
不知道大家有没有什么好的建议?
谢谢大家了
我现在简单的代码如下:
#!/usr/bin/python3
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
cv = tk.Canvas(root)
cv.create_rectangle(10,10,110,110)
cv.create_text(60,60, text='block 1')
cv.pack()
root.mainloop() 不会,{:10_277:}下一位 画布图案能不能被选中要你自己实现,根据鼠标是否移动进入图案范围、是否点击等实现鼠标进入/离开事件、鼠标点击事件等 hrpzcf 发表于 2021-6-25 11:54
画布图案能不能被选中要你自己实现,根据鼠标是否移动进入图案范围、是否点击等实现鼠标进入/离开事件、鼠 ...
谢谢,这个也是一个思路
不知道其他办法(不用画布),能不能实现这种功能?
在屏幕上显示一些东西,然后可以选中什么的
再次感谢 python初学者021 发表于 2021-6-25 12:46
谢谢,这个也是一个思路
不知道其他办法(不用画布),能不能实现这种功能?
在按钮上显示图案是否可行?我不熟悉tk,不是很清楚 不建议用画布,建议用 Label
#!/usr/bin/python3
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
cv = tk.Canvas(root)
cv.create_rectangle(10,10,110,110)
cv.create_text(60,60, text='block 1')
cv.pack()
menu = tk.Menu(root,tearoff=0)
menu.add_command(label="选项一", command=None)
menu.add_command(label="选项二", command=None)
menu.add_separator()
menu.add_command(label="选项三", command=None)
def popupmenu(event):
menu.post(event.x_root,event.y_root)
cv.bind("<Button-3>",popupmenu)
root.mainloop()
你这问题竟然让我折腾一晚上,Canvas和Menu都没用过,查了N多个网页,才搞定。。{:10_277:}{:10_266:}
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import random
root = Tk()
root.geometry("500x300")
cv = Canvas(root, bg='white')
cv.pack()
cv.create_text(280, 200, text="左键单击矩形 \n或右键选择 可随机改变颜色")
def oval_act(ev):
messagebox.showinfo(root, "你点击了矩形!")
def rect_act():
colors = ['red', 'blue', 'green', 'black', 'white', 'grey']
cv.itemconfig("my_rect", fill=random.choice(colors))
def right_click(ev):
try:
m.tk_popup(ev.x_root, ev.y_root)
finally:
m.grab_release()
# 右键菜单内容(模拟)
m = Menu(root, tearoff = 0)
m.add_command(label = "随机改变颜色", command=rect_act)
m.add_command(label ="Cut")
m.add_command(label ="Copy")
m.add_separator()
m.add_command(label ="Rename")
oval = cv.create_oval(100, 100, 200, 180, fill='yellow') # 要带fill=..参数,点击动作才行!!
cv.tag_bind(oval, '<Button-1>', oval_act)
cv.create_rectangle(200, 100, 300, 150, fill='blue', tags="my_rect")
cv.tag_bind("my_rect", "<Button-1>", lambda ev: rect_act())# 左键单击改变颜色(注意这里的写法,否则传参报错!)
cv.tag_bind("my_rect", "<Button-3>", right_click)# 右键弹出菜单
root.mainloop()
# 参考:
# 官方文档 https://tkdocs.com/tutorial/canvas.html
# https://pythonguides.com/python-tkinter-canvas/ 基本例子
# http://sandbox.mc.edu/~bennet/python/code/canv_py.html 好例子!(模块需部分修改)
……
。。? 不能放链接?什么不良信息?。。
其他,看你自己了,我歇了~ {:10_261:}
页:
[1]