0

编程新手和 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()
4

0 回答 0