天天看点

python的tk小工具之实现复选框的效果,支持多选和单选(这一篇让你明明白白的)

tk的复选框的效果

相信有很多的小伙伴都有过小编的这个经历,不管你是做爬虫也好还是做程序也好,复选框可定是少不了的,就像小编一样,需要爬取平台的玻璃企业数据,但是呢有几家企业已经停产了,没必要爬取了,还有就是上级动不动的就要一家或者多家的数据,那怎么办呢,当然是复选框了,勾上那个选哪个。

小编的这个程序只是第一版哈,最后的成果版,这里就不演示了

上效果图

大家的关注点一定要在复选框上面哈,小编之前想的是用cookie这个方法,但是后期改良了,这个只是一个初版,所以大佬们千万不要说这个tk工具比较垃圾,原因有以下几点
  • 小编用的是python3.8版本的
  • 第一,小编就想简简单单的为大家展示一个复选框的功能,
  • 第二,前期的需求用cookie就够了,粘贴复制一个cookie,导一下数据就完事了
  • 第三,这个是一个监控程序,也只是一个临时的,方便自己偷懒的,主要的还是明白其中的原理,以及方便工作

    效果图:

tk之复选框

上代码

小编知道大家的时间比较宝贵,所以不罗嗦了哈

下面的只列出来一些关键性的代码,其他的代码需要大家自己补充,也就需要大家补充一个root大框,这个很简单的吧

from tkinter import *


###这个是关键的地方代码,root窗口还的需要大家自己创建
创建一个group的窗口,在root窗口里面,线框上面写上‘请勾选不需要监视的企业’
group = LabelFrame(root, text="请勾选不需要监控的玻璃企业",padx=5, pady=5)

###放置在root窗口的第0行第1列的位置,注意tk的行和列都是从0开始的
group.grid(row=0, column=1,padx=10, pady=10)

###创建相对应的var值,其中value=0,可以理解为初始值为0,一旦被勾选上,value就会变成1
####需要多少个复选框就需要创建多少个var值,并且要与下面的对应的上去
###然后通过get取值后,判断是否为1,如果为1就代表被勾选上了,勾选上了就可以后面写个def执行需要执行的动作了
dongxingVar = StringVar(value="0")
dejinVar = StringVar(value="0")
zhengdaVar = StringVar(value="0")
xinliVar = StringVar(value="0")
changchengVar = StringVar(value="0")
changhongVar = StringVar(value='0')
xinleiVar = StringVar(value="0")
jindongVar = StringVar(value="0")
haishengVar = StringVar(value="0")
yingxinVar = StringVar(value="0")
feiyaoVar = StringVar(value="0")


###这个def函数,也就是一个动作函数
def print_selection():
###下面需要要实现的功能
	###dejinVar.get(),可以获取dejinVar这个时候的值,上面不是默认是0吗,如果被勾选了,get他一下就是1了,然后可以执行一些动作(自己定义),如果没有勾选上,他的值还是0
    print(dejinVar.get())




###这个是创建复选框,东兴玻璃,可以理解为通过variable复制给上面创建的相对应的字符串var值,
后面的command这个是代表着一旦勾选了这个复选框,需要执行的动作,这里的就是上面的def函数。
切记不带函数后面的括号

dongxing = Checkbutton(group, text="东兴玻璃", variable=dongxingVar,command=print_selection)
dongxing.grid(row=0, column=1, sticky=W, padx=2 ,pady=5)

dejin = Checkbutton(group, text="德金玻璃", variable=dejinVar,command=print_selection)
dejin.grid(row=0, column=2, sticky=W, padx=2 ,pady=5)

zhengda = Checkbutton(group, text="正大玻璃", variable=zhengdaVar,command=print_selection)
zhengda.grid(row=0, column=3, sticky=W, padx=2 ,pady=5)

xinli = Checkbutton(group, text="鑫利玻璃", variable=xinliVar,command=print_selection)
xinli.grid(row=1, column=1, sticky=W, padx=2 ,pady=5)

changcheng = Checkbutton(group, text="长城玻璃", variable=changchengVar,command=print_selection)
changcheng.grid(row=1, column=2, sticky=W, padx=2 ,pady=5)

changhong = Checkbutton(group, text="长红玻璃", variable=changhongVar,command=print_selection)
changhong.grid(row=1, column=3, sticky=W, padx=2 ,pady=5)

xinlei = Checkbutton(group, text="鑫磊玻璃", variable=xinleiVar,command=print_selection)
xinlei.grid(row=2, column=1, sticky=W, padx=2 ,pady=5)


jindong = Checkbutton(group, text="金东玻璃", variable=jindongVar,command=print_selection)
jindong.grid(row=2, column=2, sticky=W, padx=2 ,pady=5)


haisheng = Checkbutton(group, text="海生玻璃", variable=haishengVar,command=print_selection)
haisheng.grid(row=2, column=3, sticky=W, padx=2 ,pady=5)



yingxin = Checkbutton(group, text="迎新玻璃", variable=yingxinVar,command=print_selection)
yingxin.grid(row=0, column=4, sticky=W, padx=2 ,pady=5)


feiyao = Checkbutton(group, text="飞耀玻璃", variable=feiyaoVar,command=print_selection)
feiyao.grid(row=1, column=4, sticky=W, padx=2 ,pady=5)


####可以结合if判断是不是为1,来进行相应的操作,当然这个只是一个笨方法,大家有好的方法,不妨一起分享一下

           

结束语

原理非常的简单,自己也是看了好多网上的资料,自己用的python3.8版本的,好多都是不匹配的,希望可以帮上大家,希望通过大家一起努力,互联网更加的强大