如何根据串行读取实时更改bg颜色?

2024-10-03 13:16:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的第一个GUI enter image description here

我想实时更改按钮的背景颜色。 也许是这样的烟雾,但我不知道该放在哪里(

 b = ser.read()
 
    if b == b'1': 
        start_forButton.configure(bg='red') 
    else:
        start_forButton.configure(bg='white')

    if b == b'2':  
        start_backButton.configure(bg='red')  
    else:
        start_backButton.configure(bg='white')

enter image description here

也许是使用after函数,因为我现在的代码正在改变颜色,但有一个clik延迟,不是实时的


Tags: if颜色configureguired按钮startelse
2条回答

这是可行的,我在ser.read commmand之后添加了ser.flusInput和startogger,以便程序每隔100ms读取一次串行端口

现在按钮正在实时更改背景颜色(延迟100ms):

  def warning():
         b = ser.read()
         ser.flushInput()
         print(b)

         if b == b'1': 
         start_forButton.configure(bg='red')  

         if b == b'2': 
         start_backButton.configure(bg='red')  
         
         if b==b'0':
         start_forButton.configure(bg='white')
         start_backButton.configure(bg='white')

    def startLogger():
             while True:
                 warning()
                 sleep(0.1)

您可以使用按钮小部件中的命令调用函数来更改颜色

from tkinter import *

root = Tk()

def move_forward_pressed():
    button1.configure(bg='red')
def stop_pressed():
    button1.configure(bg='green')

button1 = Button(root, text='move forward', bg='green', command=move_forward_pressed)
button1.pack()
button2 = Button(root, text='stop', command=stop_pressed)
button2.pack()

root.mainloop()

相关问题 更多 >