我现在正在学习一些tkinter,并遇到了一个我似乎无法解决的问题 .
我有一个类(名为'GUI'),其中我首先声明另一个类的对象(名为'client'),然后创建一个简单的tkinter GUI,其中包含一个用户输入地址的输入字段 .
然后我有一个按钮,按下后,获取地址并将其传递给客户端类的功能 . 此函数从库中调用另一个函数,该函数将发送到外部源(“客户端”)并获取该地址处的布尔寄存器的值 .
到了这里,我有工作 .
我现在想要使用该布尔寄存器的值更新tkinter GUI中的另一个输入字段 .
这是一个代码示例:
class GUI:
def __init__(self, master):
device = client()
self.master = master
#Define size (x,y) and position (top left is 0,0) of window
master.geometry("800x400+300+300")
#Disable window resize
master.resizable(width=False, height=False)
#GUI Controls
lbl_read_discrete_output = Label(self.master, text="Read boolean register")
lbl_read_discrete_output_address = Label(self.master, text="Address:")
ent_read_discrete_output_address = Entry(self.master)
btn_read_discrete_output_address = Button(self.master, text='READ', command=lambda: device.read_discrete_output(int(ent_read_discrete_output_address.get())))
ent_read_discrete_output_value = Entry(self.master, state='disabled')
#GUI Layout
lbl_read_discrete_output.grid(column=0, row=6, padx=5, pady=5)
lbl_read_discrete_output_address.grid(column=0, row=7, padx=5, pady=5)
ent_read_discrete_output_address.grid(column=1, row=7, padx=5, pady=5)
btn_read_discrete_output_address.grid(column=2, row=7, padx=5, pady=5)
ent_read_discrete_output_value.grid(column=3, row=7, padx=5, pady=5)
class client:
def __init__(self):
pass
def read_discrete_output(self, address):
data = self._client.read_coils(address-1, 1).bits[0:1]
if not data[0]:
#Update entry field 'ent_read_discrete_output_value' with "FALSE"
else:
#Update entry field 'ent_read_discrete_output_value' with "TRUE"
def main():
#Create GUI object
root = Tk()
app = GUI(root)
root.mainloop()
if __name__ == '__main__':
main()
任何帮助将不胜感激!
1 回答
你可以这样解决这个问题:
让我知道这个是否奏效 .