通过顺序函数调用更新 tkinter 标签

updating tkinter label by sequential function call

我有一个带有不同参数的函数,根据参数我的 tkinter 标签应该自动更新,因为我在顺序方法上一个接一个地传递参数:: 这是我的代码。

import time
import Tkinter as tk

i='*00T%'
j='*01T%'
def read(n):
    if n=='*00T%':
        print('hi')
        value = 1
        value += 1
        var1.set(value)
    elif n=='*01T%':
        print('hello')
        value = 6
        value += 1
        var2.set(value)

root = tk.Tk()
root.geometry("200x200")
root.title("serial recieved values ")
var1 = tk.StringVar()
var2 = tk.StringVar()
label1 = tk.Label(root,bg='gold',fg='blue', textvariable=var1)
label2 = tk.Label(root,bg='gold',fg='blue', textvariable=var2)
label1.pack()
label2.pack()
read,(i, )
time.sleep(0.5)
read,(j, )
time.sleep(0.5)
root.after(1000,read(i))
root.after(1000,read(j))
root.mainloop()

我不明白你的标签应该什么时候更新。这是您的代码的修改版本,其中标签每 500 毫秒交替更新一次。这看起来像你需要的吗?

import tkinter as tk

i='*00T%'
j='*01T%'

def read(n):
    if n == i:
        var1.set(var1.get()+1) # update var1
        root.after(500, lambda:read(j)) # recall function in 500 ms
    elif n == j:
        var2.set(var2.get()+1) # update varé
        root.after(500, lambda:read(i)) # recall function in 500 ms

root = tk.Tk()
root.geometry("200x200")
root.title("serial received values")

var1 = tk.IntVar()
var1.set(1) # initial value for var1
var2 = tk.IntVar()
var2.set(6) # initial value for var2

label1 = tk.Label(root, bg='gold', fg='blue', textvariable=var1)
label1.pack()
label2 = tk.Label(root, bg='gold', fg='blue', textvariable=var2)
label2.pack()

root.after(500, lambda:read(i))
root.mainloop()

我想不断更新我的标签并读取串行连接设备的值.. 为此,这种代码工作的基本思想......用硬件进行了测试和跟踪。 请注意,这是一个想法代码,而不是串行代码。 但是从这个想法我们可以处理连接在同一个串行端口上的多个从机,这些从机使用 rs-485 协议进行读写操作。

import serial
import time
import Tkinter as tk
i='*00T%'
j='*01T%'
value=0
value1=5
def read():
    global value
    print('hi')
    value += 1
    var1.set(value)
def read1():
    global value1
    print('hello')
    value1 += 1
    var2.set(value1)
def choose():
        read()#1st read function execute
        time.sleep(1)
        read1()#next read1 function execute
        time.sleep(1)
        root.after(1000,choose)#for continuous label update 

root = tk.Tk()
root.geometry("200x200")
root.title("serial recieved values ")
var1 = tk.StringVar()
var2 = tk.StringVar()
label1 = tk.Label(root,bg='gold',fg='blue', textvariable=var1)
label2 = tk.Label(root,bg='gold',fg='blue', textvariable=var2)
label1.pack()
label2.pack()
root.after(1000,choose)
root.mainloop()