Виджет кнопка

Виджет кнопка предназначен для формирования команды управления и отправки ее на управляемый объект.




Создание кнопки.

btFig = Button(root,text=buttonName,width=10,height=1,bg="white",fg="black" )

btFig – ссылка на объект
text= "Название сигнала управления", выводится на самой кнопке.
width=10 -- ширина кнопки
height=1 -- высота кнопки
bg="white" -- цвет фона
fg="black" -- цвет шрифта

Размещение кнопки.

btFig.place(x=placeX,y=placeY)

x=placeX -- координата х
y=placeY -- координата у

Обработка события (нажатие кнопки).

btFig.config(command=lambda widget=btFig, var1=param1,var2=param2: sendControl(widget,var1,var2) )

widget=btFig -- переменная "ссылка на объект"
var1=param1 -- переменная var1 со значением param1
var2=param2 -- переменная var2 со значением param2
sendControl(widget,var1,var2) -- функция обработки нажатия кнопки.

btFig = Button(root,text=buttonName,width=10,height=1,bg="white",fg="black" )
btFig.place(x=placeX,y=placeY)
btFig.config(command=lambda widget=btFig, var1=param1,var2=param2: sendControl(widget,var1,var2) )


Функция отправки команды в удаленное устройство.
В данном случае используется modbus регистр WRITE_SINGLE_COIL.

def sendControl(widget,coilNum,coilState):
    master.execute(1, cst.WRITE_SINGLE_COIL, int(coilNum), output_value=int(coilState) )


Код в программе
Теперь команды управления передаются на объект



from Tkinter import *
import modbus_tk
import modbus_tk.defines as cst
import modbus_tk.modbus_tcp as modbus_tcp
import math
def sendControl(widget,coilNum,coilState):
    master.execute(1, cst.WRITE_SINGLE_COIL, int(coilNum), output_value=int(coilState) )


master = modbus_tcp.TcpMaster(host='192.168.0.156', port=502)
master.set_timeout(1.0)

root = Tk()

canv = Canvas(root,width=1900,height=950,bg="black",bd=0, highlightthickness=0, relief='ridge')
canv.place(x=0, y=25)

btFig1 = Button(root,text="Discret ON",width=10,height=1,bg="white",fg="black" )
btFig1.place(x=60,y=50)
btFig1.config(command=lambda widget=btFig1, coilNum=0, coilState=1: sendControl(widget,coilNum,coilState) )


btFig2 = Button(root,text="Discret OFF",width=10,height=1,bg="white",fg="black" )
btFig2.place(x=60,y=100)
btFig2.config(command=lambda widget=btFig1, coilNum=0, coilState=0: sendControl(widget,coilNum,coilState) )

root.mainloop()