0

我正在尝试在网格按钮上安排一个有几个单词的句子。当单击该句子的一个单词时,我想删除该网格按钮的单词,然后将其移动到另一行网格按钮。如何仅删除单击的那个网格按钮?反复点击,这些文字会从原来的网格按钮位置移动到其他位置,并一一消失。

shuffle_btn.grid_forget(row=r, column=c)
shuffle_btn.grid_remove(row=r, column=c)

不起作用。它给出了这个错误“TypeError:grid_forget()得到了一个意外的关键字参数'row'

我该如何解决这个问题?提前致谢。

代码如下,它可以移动但不能删除。

from tkinter import *
root = Tk()
root.title('words clicking')
root.geometry("1000x600")
btn_lst = ["Do", "you", "have", "a", "book", "?"]
w_cnt = 0
# Create answer buttons
def move_to_ans(row, column):
    global cnt, w_cnt
    r = row
    c = column
    if w_cnt < cnt:
        ans_btn = Button(root, text=btn_lst[column],  font=(
        "Times", 20), fg="black")
        ans_btn.grid(row=1, column=w_cnt, sticky=N+E+W+S, pady=100)
        # shuffle_btn.grid_forget(row=r, column=c)
        w_cnt += 1
 # Create buttons of each word in a sentence
 cnt = len(btn_lst)
 for btn in range(cnt):
     shuffle_btn = Button(root, text=btn_lst[btn], command=lambda row=0, column=btn: move_to_ans(row, 
     column), font=("Times", 20), fg="blue")
 shuffle_btn.grid(row=0, column=btn, sticky=N+E+W+S, pady=100)
 root.mainloop()

预期结果:点击前洗牌:(有做书吗?一个你)-->点击时如何删除

从点击移动后回答单词:(你有书吗?)

4

1 回答 1

0

你可以root.grid_slaves(row=r, column=c)[0].destroy()在里面使用move_to_ans()

def move_to_ans(row, column):
    global cnt, w_cnt
    r = row
    c = column
    if w_cnt < cnt:
        ans_btn = Button(root, text=btn_lst[column], font=("Times", 20), fg="black")
        ans_btn.grid(row=1, column=w_cnt, sticky=N+E+W+S, pady=100)
        root.grid_slaves(row=r, column=c)[0].destroy() # destroy the clicked button
        w_cnt += 1

另一种方法是将按钮实例传递给move_to_ans().

于 2021-02-03T07:13:29.443 回答