當我運行此代碼時,標題中出現這樣的錯誤。我想制作待辦事項串列,但我在路上遇到了很多錯誤:(。我無法tab在其他函式中呼叫 array ( ) 并且我無法更改 checkbox 中的列grid。
from tkinter import *
from tkinter import messagebox as msb
win = Tk()
win.title("Checkbutton")
win.geometry("300x600")
win.resizable("False","False")
task_name = StringVar()
tab = []
tab.append("")
tab.append("")
r = 2
c = 1
cc = IntVar
def checking():
tab[r].grid(row=r, column=1, padx=(10, 10), pady=(5, 5))
def addcheck():
global r
global c
global cc
if r < 16:
tab.append(Checkbutton(variable = cc, text = task_name.get(), command = checking))
tab[r].grid(row=r, column=0, padx=(10, 10), pady=(5, 5))
r = r 1
task_entry.delete(0, 20)
else:
msb.showwarning(title="DANGER", message="TOO MUCH TASKS, TAKE A REST")
text1 = Label(win, text = "TO DO:").grid(row = 1, column = 0, padx = (10, 10), pady = (30, 10))
text2 = Label(win, text = "DONE: ").grid(row = 1, column = 1, padx = (10, 10), pady = (30, 10))
task_entry = Entry(width = "20", textvariable = task_name)
task_entry.grid(row = 0, column = 0, padx = (30, 10))
add = Button(win, text = "add task", command = addcheck).grid(row = 0, column = 1, padx = (10, 10))
mainloop()
完整錯誤:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\matib\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "D:\pythonprojekty\pythonProject\main.py", line 18, in checking
tab[r].grid(row=r, column=1, padx=(10, 10), pady=(5, 5))
IndexError: list index out of range
uj5u.com熱心網友回復:
您之所以會遇到問題,是IndexError因為嘗試r在checking()函式中使用全域變數——而修復它的方法是row在呼叫它時將該值作為引數顯式傳遞。在下面的代碼中,這是通過使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/345022.html
