用鼠标单击在tkinter中的单选按钮之间绘制线

用鼠标单击在tkinter中的单选按钮之间绘制线,tkinter,tkinter-canvas,Tkinter,Tkinter Canvas,新的编程和新的tkinter…我想有两列单选按钮;如果用户单击第0列中的按钮1,然后单击第2列中的按钮3,则在单选按钮之间画一条线。我看到画线的唯一方法是在画布上。从一端到另一端的最佳方式是什么?我是在画布上制作虚拟按钮,还是可以将单选按钮放置在画布上,然后单击“选择/取消选择”鼠标控制行的开始/结束 from tkinter import * root = Tk() root.geometry("800x600") var1 = IntVar() var2 = IntVar() start

新的编程和新的tkinter…我想有两列单选按钮;如果用户单击第0列中的按钮1,然后单击第2列中的按钮3,则在单选按钮之间画一条线。我看到画线的唯一方法是在画布上。从一端到另一端的最佳方式是什么?我是在画布上制作虚拟按钮,还是可以将单选按钮放置在画布上,然后单击“选择/取消选择”鼠标控制行的开始/结束

from tkinter import *


root = Tk()
root.geometry("800x600")
var1 = IntVar()
var2 = IntVar()
start = None

def selLight():
   selection = "You have selected light " + str(var1.get())
   labelLight.config(text = selection)

def selScale():
   selection = "You have selected scale " + str(var2.get())
   labelScale.config(text = selection)

def onclick_handler(event):
    global start
    start = (event.x, event.y)

def onrelease_handler(event):
    global start
    if start is not None:
        x = start[0]
        y = start[1]
        event.widget.create_line(x, y, event.x, event.y)
        start = None

canvas = Canvas(root, height = 550, width = 240, bg = 'red')
canvas.grid(row = 0, column = 1, rowspan = 3)
canvas.bind("<Button-1>", onclick_handler)
canvas.bind("<ButtonRelease-1>", onrelease_handler)


lightBtn1 = Radiobutton(root, text = "Light 1", variable=var1, value = 1, command=selLight)
lightBtn1.grid(row = 0, column = 0)

lightBtn2 = Radiobutton(root, text = "Light 2", variable=var1, value = 2, command=selLight)
lightBtn2.grid(row = 1, column = 0)

lightBtn3 = Radiobutton(root, text = "Light 3", variable=var1, value = 3, command=selLight)
lightBtn3.grid(row = 2, column = 0)

scaleBtn1 = Radiobutton(root, text = "Scale 1",variable=var2, value = 1, command = selScale)
scaleBtn1.grid(row=0, column=2)

scaleBtn2 = Radiobutton(root, text = "Scale 2",variable=var2, value = 2, command = selScale)
scaleBtn2.grid(row=1, column=2)

scaleBtn3 = Radiobutton(root, text = "Scale 3", variable = var2, value = 3, command = selScale)
scaleBtn3.grid(row=2, column=2)

labelLight = Label(root)
labelLight.grid(row = 6, column = 1)

labelScale = Label(root)
labelScale.grid(row=7, column = 1)

root.mainloop()
从tkinter导入*
root=Tk()
根几何(“800x600”)
var1=IntVar()
var2=IntVar()
开始=无
def selLight():
selection=“您已选择灯光”+str(var1.get())
labelLight.config(text=selection)
def selScale():
selection=“您已经选择了scale”+str(var2.get())
labelScale.config(text=selection)
def onclick_处理程序(事件):
全球启动
开始=(event.x,event.y)
def onrelease_处理程序(事件):
全球启动
如果“开始”不是“无”:
x=开始[0]
y=开始[1]
创建_行(x,y,event.x,event.y)
开始=无
画布=画布(根,高度=550,宽度=240,背景='红色')
canvas.grid(行=0,列=1,行跨度=3)
canvas.bind(“,onclick\u处理程序)
canvas.bind(“,onrelease\u处理程序)
lightBtn1=Radiobutton(root,text=“Light 1”,变量=var1,值=1,命令=selLight)
lightBtn1.grid(行=0,列=0)
lightBtn2=Radiobutton(根,text=“Light 2”,变量=var1,值=2,命令=selLight)
lightBtn2.grid(行=1,列=0)
lightBtn3=Radiobutton(root,text=“Light 3”,变量=var1,值=3,命令=selLight)
lightBtn3.grid(行=2,列=0)
scaleBtn1=Radiobutton(root,text=“Scale 1”,变量=var2,值=1,命令=selScale)
scaleBtn1.grid(行=0,列=2)
scaleBtn2=Radiobutton(root,text=“Scale 2”,变量=var2,值=2,命令=selScale)
scaleBtn2.grid(行=1,列=2)
scaleBtn3=单选按钮(root,text=“Scale 3”,变量=var2,值=3,命令=selScale)
scaleBtn3.grid(行=2,列=2)
labelLight=标签(根)
labelLight.grid(行=6,列=1)
labelScale=标签(根)
labelScale.grid(行=7,列=1)
root.mainloop()

你是对的:画线的唯一方法是在画布上。你的问题是什么?对不起。我声称自己无知。我编辑了这个问题,任何帮助都将不胜感激。