关于python按钮控件的操作

首先,我写了个基于tk库的皮肤库的ui程序,包含一个文本框,一个按钮。
按钮设定为按一次就会像文本框插入一个单词,然后之后每插入一次单词就用逗号隔开。
我想要的结果是单词只能添加一次,并且第一次按下为添加,第二次按下为取消添加(也就是删掉该单词),那么该如何编写代码?

我的初步代码思路如下:

import ttkbootstrap as ttk
ck = ttk.Window(
        title="环境风景",
        size=(750, 600),  # 窗口的大小
        position=(600, 100),  # 窗口位置
        resizable=(False, False),  # 让窗口不可更改大小
        alpha=0.91,  # 窗口透明度
    )

show_text=ttk.Text(ck,width=70,height=4)
show_text.place(x=10,y=10)

def text_add():
    text1='sky'
    show_text.insert('insert',text1)
    show_text.insert('insert',',')

b1=ttk.Button(ck,text='天空',command=text_add)
b1.place(x=10,y=100)

ck.mainloop()

基于Monster 组和GPT的调写:

  • 用一个字典来记录每个单词是否已经被添加过。当按钮被按下时,检查该单词是否已经在字典中,如果不在,则将其添加到文本框中,并将其添加到字典中;如果已经在字典中,则从文本框中删除该单词,并将其从字典中删除。

import ttkbootstrap as ttk

ck = ttk.Window(
    title="环境风景",
    size=(750, 600),  # 窗口的大小
    position=(600, 100),  # 窗口位置
    resizable=(False, False),  # 让窗口不可更改大小
    alpha=0.91,  # 窗口透明度
)

show_text = ttk.Text(ck, width=70, height=4)
show_text.place(x=10, y=10)

added_words = {}  # 用于记录已添加的单词

def text_add():
    word = 'sky'
    if word not in added_words:
        show_text.insert('end', word+', ')
        added_words[word] = True
    else:
        start_pos = show_text.search(word, '1.0', 'end')
        end_pos = f"{start_pos}+{len(word)}c"
        show_text.delete(start_pos, end_pos)
        added_words.pop(word, None)

b1 = ttk.Button(ck, text='天空', command=text_add)
b1.place(x=10, y=100)

ck.mainloop()

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^