通过选择所有复选框,我希望在所有复选框的顶部有一个全选复选框。单击“下一步”按钮后,第二帧将出现,其中包含代码列表中提到的复选框
from tkinter import *
def raise_frame(frame):
frame.tkraise()
root = Tk()
f1 = Frame(root)
f2 = Frame(root)
def Quit():
root.destroy()
checkvar1 = IntVar()
checkvar2 = IntVar()
checkvar3 = IntVar()
def checkbox():
raise_frame(f2)
IPR_List=["COMM 662 SCTP PATH UP","COMM 665 SCTP PATH DOWN","COMM 478 GLOBALMTITLE TRANSLATION FAILURE","COMM 275 MTP LEVEL ROUTING ERROR",
"COMM 628 SCTP ASSOCIATION ESTABLISHED","COMM 0629 SCTP ASSOCIATION TERMINATED","COMM 137 CCS7:SRC DPC FAILED","139 CCS7:SRC DPC ACTIVATED",
"COMM 338 CCS7:SCCP SUBSYS--OUT-OF-SERVICE","COMM 339 CCS7:SCCP SUBSYS--IN-OF-SERVICE","363 SCCP:ROUTE on PC/SSN FAILURE",
"COMM 479 FLEX RTNG FILTERING MATCHED","COMM 271 GATEWAY.SS7 MSU REJECTED","COMM 93 CCS7:SEQ TABLE CKSUM MISMATCH",]
j=0
for i in IPR_List:
chkbtn = Checkbutton(f2, text = i, onvalue = 1, offvalue = 0, height = 2, width = 70).grid(row=j,column=1)
j=j+1
for frame in (f1, f2):
frame.grid(row=0, column=0, sticky='news')
sd=StringVar()
pathlabel = Entry(f1,text=sd,font=('times',10,'bold'),fg='blue',bg='white',width=60)
pathlabel.grid(row=1,column=1)
browsebutton = Button(f1, text="Browse")
browsebutton.grid(row=1,column=2)
Button(f1, text='NEXT', command=checkbox).grid(row=2,column=1)
Quit = Button(f1, text="Quit", command=Quit)
Quit.grid(row=2,column=2)
raise_frame(f1)
root.mainloop()
我想将所有复选框保持在一行的左侧。在这行的顶部,我想在所有复选框的顶部设置一个全选复选框,选中所有复选框
这是我的解决方案(可能可以简化,但……这是一个解决方案):
关于如何设置的快速说明。如果有一组复选框要添加
select all
复选框,则必须将它们全部附加到列表中,并在循环中创建它们时将该列表作为第三个参数,如示例所示。然后,在循环之后,您希望附加另一个实例,但还必须将第四个参数设置为True。这将允许轻松创建带有全选的复选框。如果您只想有几个复选框,只需将它们放在一个循环中,并只添加前两个参数:parent和name希望澄清如何设置。关于编码部分:
当在代码中取消选择全部,然后在应该选择的时候调用时,可能会出现一些混乱。原因是首先需要清除所有复选框,因为
.invoke()
会将它们切换到相反的位置,并且还会模拟用户输入,因此所有复选框都将调用.check()
方法,而对于取消选择,则以相反的方式工作此外,如果if all selected和一个或多个get deselected的功能被用户自动取消选中select all复选框(因为它是不真实的),代码可能会变得不那么复杂。(最后2行)
编辑1:添加代码,如果用户选择了所有复选框(并且用户未选择所有复选框)(最后2行),则选中所有复选框
我想说剩下的是非常简单的python逻辑,所以如果您有问题,可以问他们
相关问题 更多 >
编程相关推荐