簡體   English   中英

在python中再次出現多個復選框

[英]multiple checkboxes again in python

我是一個菜鳥,我試圖一次創建許多復選框。 最終,我的程序將在同一目錄中創建文件夾,具體取決於已檢查的文件夾。 我只是沒有得到 IntVar() 的使用。 我希望默認情況下會勾選某些框...根據我字典中的條目,我什至嘗試將“變量”= 1 放入我的循環中,但未勾選這些框!!!

import os
from tkinter import *


def create_folders():
    for item in list_of_folders:
        print(item)
            # os.mkdir(list_of_folders[item])


list_of_folders = {"Audio":0,"AVI":0, "Footage":1, "GFX":1, "MP4":1, "MOV":1, "MPG":0,  "Photography":1, "Press":1}
num_row=0
window = Tk()
var=[]
window.title("Folder Creation v1.0")
window.minsize(300, 200)
window.config(padx=100, pady=100)

for item in list_of_folders:
    num_row +=1
    Checkbutton(window, text=item, variable=list_of_folders[item]).grid(row=num_row, sticky=W)



Label(window, text="").grid(column=0, row=10, sticky=W)

Button(window, text="Create Folders", command=create_folders).grid(column=0, row=15, sticky=W)

Button(window, text="Exit", command=window.destroy).grid(column=1, row=15, sticky=W)

window.mainloop()

你太接近勝利了,我沒有添加任何花哨的東西,我只是優化了你的代碼並使用IntVar(value=1)檢查按鈕並將該IntVar()的變量存儲到列表中以備后用迭代最終按鈕單擊以實際創建目錄。

如屏幕截圖所示,調用IntVar()上的 get 方法會返回復選框的當前狀態。

import os
from tkinter import *


def create_folders():
    for button in boxes:
        if button["state"].get(): #check if its checked or not
            print("Creating folder", button["text"])
            os.mkdir(button["text"])


boxes = []

list_of_folders = {
    "Audio": 0,
    "AVI": 0, 
    "Footage": 1, 
    "GFX": 1, 
    "MP4": 0, 
    "MOV": 1,
    "MPG": 0,  
    "Photography": 1,
    "Press": 1
}

num_row=0
window = Tk()
window.title("Folder Creation v1.0")
window.minsize(300, 200)
window.config(padx=100, pady=100)

for item in list_of_folders.keys():
    lookup = IntVar(value=list_of_folders[item])
    Checkbutton(window, text = item, variable=lookup).grid(row=len(boxes) + 1, sticky=W)
    boxes.append({ 
        "text": item, #store name to create the directory
        "state": lookup #store reference to check whether we need to create directory
    })



Label(window, text="").grid(column=0, row=10, sticky=W)

Button(window, text="Create Folders", command=create_folders).grid(column=0, row=15, sticky=W)

Button(window, text="Exit", command=window.destroy).grid(column=1, row=15, sticky=W)
window.mainloop()

截屏

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM