首页 > 解决方案 > 我可以删除列表变量中的一些值吗?或者有更好的解决方案吗?

问题描述

我有一个像文本滚动显示这样的项目。它可以分成 3 个部分。首先是获取颜色和消息等数据并将它们通过 USB 端口发送到 RS485 的程序。第二个是微控制器,第三个是由可寻址 LED 复合而成的监视器。

我的问题在第一部分。我使用 tkinter 来制作我的程序,它已经在我的目标上运行,但它有一个我无法解决的问题。我需要在我的程序上显示缓冲区大小,包括警告并在发送数据之前删除过度缓冲区,因为我的微控制器内存不足,因此我的消息必须受到限制。

这是我插入主代码之前这个新部分的示例代码。

from tkinter import *
root = Tk()
var = StringVar()
data = len(var.get())
def lenstr():
    global data
    if data > 20:
        print("Over Buffer")
        data = len(var.get())
        M['text'] = data
        root.after(1, lenstr)
    else:
        data = len(var.get())
        M['text'] = data
        root.after(1, lenstr)
l = Label(root, textvariable = var)
l.pack()
M = Label(root, text="")
M.pack()
t = Entry(root, textvariable = var)
t.pack()
lenstr()
root.mainloop()

从此代码中,我可以显示我的消息的长度,当它超过 20 时,它将打印 Over Buffer。[1] https://www.img.in.th/image/Ee2lZa:是我的代码结果

因此,下一步是在 if data > 20 中写入代码以删除 over 缓冲区并在 over 之前返回旧消息以显示。

后来,我尝试声明一个列表变量并向其发送值,我将使用方法 pop() 或 remove() 但它不能,因为两者都无法定义我想要的位置(我的数据形式像这个列表 ['ABCDEFG '] 我想删除 [0][6] )

我可以从我的列表变量中删除一些值,或者它有更好的解决方案来解决我的问题吗?

对不起我的英语弱点,感谢您阅读或回复。

我使用了列表变量,因为我认为 remove() 和 pop() 之类的方法都可以解决我的问题。我试图从列表中设置变量,它可以像这段代码一样工作,我可以设置新值来显示。在这段代码中,当它超过缓冲区时,它会将值设置为 Google

[2] https://www.img.in.th/image/EeGfiQ:结果

from tkinter import *
root = Tk()
var = StringVar()
data = len(var.get())
LABELTEST = ['Google','Facebook']
def lenstr():
    global data
    if data > 20:
        print("Over Buffer")
        data = len(var.get())
        var.set(LABELTEST[0])
        print(var.get())
        M['text'] = data
        root.after(1, lenstr)
    else:
        data = len(var.get())
        M['text'] = data
        root.after(1, lenstr)


l = Label(root, textvariable = var)
l.pack()
M = Label(root, text="")
M.pack()
t = Entry(root, textvariable = var)
t.pack()
lenstr()
root.mainloop()

标签: pythontkinter

解决方案


推荐阅读