天天看點

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版本的,好多都是不比對的,希望可以幫上大家,希望通過大家一起努力,網際網路更加的強大