通过顺序函数调用更新 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()
我有一个带有不同参数的函数,根据参数我的 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()