我是一個菜鳥,我試圖一次創建許多復選框。最終,我的程式將在同一目錄中創建檔案夾,具體取決于已檢查的檔案夾。我只是沒有得到 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()
uj5u.com熱心網友回復:
你離勝利太近了,我沒有添加任何花哨的東西,我只是稍微優化了你的代碼并使用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()
截屏

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360451.html
標籤:Python 特金特 复选框 python-3.10
