首先,我写了个基于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()
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()
这种情形下,自由度k可以粗略计算得:
k=min(n1−1,n2−1)k=min(n_1-1, n_2-1)k=min(n1−1,n2−1)
然后参照2.进行计算求解。