Дискретный виджет

Дискретный виджет выводит на canvas состояние логических входов устройства.




Формирование четырехугольника
х1 – координата верхний левый угол х
у1 – координата верхний левый угол у
х2 – координата нижний правый угол х
у2 – координата нижний правый угол у
fill – цвет заполнения
diFig – ссылка на объект

diFig=canv.create_rectangle(x1,y1,x2,y2,fill=color, outline='black')


Изменение цвета квадрата

canv.itemconfig(diFig,fill=color)


Формирование круга
х1 – координата верхний левый угол х
у1 – координата верхний левый угол у
х2 – координата нижний правый угол х
у2 – координата нижний правый угол у
fill – цвет заполнения
diFig – ссылка на объект

diFig=canv.create_oval(x1,y1,x2,y2,fill=color, outline='black')


Изменение цвета круга

canv.itemconfig(diFig,fill=color)


Эти объекты в программе

from Tkinter import *
import modbus_tk
import modbus_tk.defines as cst
import modbus_tk.modbus_tcp as modbus_tcp
import math
master = modbus_tcp.TcpMaster(host='192.168.0.1', port=502)
master.set_timeout(1.0)

root = Tk()
im = PhotoImage(file='bg.gif')
canv = Canvas(root,width=1900,height=950,bg="black",bd=0, highlightthickness=0, relief='ridge')
canv.place(x=0, y=25)
canv.create_image(1, 1,anchor=NW, image=im)
diFig1=canv.create_rectangle(10,10,30,30,fill='gray', outline='black')
diFig2=canv.create_oval(50,50,80,80,fill='gray', outline='black')
getDI=master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 10)

if(int(getDI[0]) == 1):
     canv.itemconfig(diFig1,fill='red')
if(int(getDI[0]) == 0):
     canv.itemconfig(diFig1,fill='green')
if(int(getDI[1]) == 1):
     canv.itemconfig(diFig2,fill='red')
if(int(getDI[1]) == 0):
     canv.itemconfig(diFig2,fill='green')

root.mainloop()