我想创建一个提醒,通过按确认按钮提醒我在组合框中选择的时间。我将时间放在标签中,并创建一个删除按钮,可以通过循环删除同一行中的标签和按钮本身。如果只有一个标签,它可以工作,但如果我增加了它的数量,它只会破坏最后一个标签和按钮。
下面是我的代码:
p <- data.frame(a = setNames(tapply(df$Item, df$Week, paste), paste("Week", unique(df$Week), "has:") ))
p
a
Week 1 has: A11, A12, B11, C12
Week 2 has: A11, A12
Week 3 has: B11, C12, C11, A12
我认为循环或函数deletelabel一定有问题,但我仍然无法修复它。
答案 0 :(得分:0)
self.savelabel_list.remove(self.savelabel_list[idx])
请勿更改列表。如果删除标签/按钮#1,则标签#2变为#1,因此当您按下按钮删除标签#2时,它会删除标签#3,因为所有内容都已向上移动。另外,请注意,每次调用“save()”时,它都会创建一组覆盖旧窗口小部件的新窗口小部件,最终会降低计算机速度。仅创建并标记新时间标签。使用self.next_row变量(或其他)跟踪行,并每次增加一行。
答案 1 :(得分:0)
这是一个指出可用类是多少的问题。为每个提醒创建一个带有标签和关闭按钮的新类。
from tkinter import *
from tkinter import ttk
class NewButton:
def __init__(self, master, label_text, this_row):
## put everything in a new frame so destroying
## one frame will destroy everything in it
self.fr=Frame(master)
self.fr.grid(row=this_row, column=1)
Label(self.fr, text=label_text).grid(row=0, column=1)
Button(self.fr, text="Close This",
command=self.fr.destroy).grid(row=0, column=2)
class Final:
def __init__(self,app):
self.app=app
self.this_row=4
self.time_var= StringVar()
self.timecombo = ttk.Combobox(app,textvariable=self.time_var)
self.timecombo.grid(row=0,column=1)
self.button1=Button(app,text='confirmed',command=self.save)
self.button1.grid(row=3,column=2)
def save(self):
save_text = self.time_var.get()
self.this_row += 1
next_button=NewButton(self.app, save_text, self.this_row)
self.time_var.set("")
app = Tk()
a = Final(app)
app.title('things to do')
app.geometry("500x300+200+200")
app.mainloop()