我在Tkinter python中玩了一會兒,我得到了這個錯誤,我想這是沒有任何理由的。
print(self. entries[x])
IndexError。list index out of range。
我的代碼:
from tkinter import *
class Application(Frame)。
def __init__(self, master)。
super().__init__(master)
self.master = master
self.submit()
def submit(self) 。
for x in range(2)。
self.entry = []
self.buttons = []
e = 條目()
self. entries.append(e)
self. entries[x].grid(row=x, column=0)
b = Button(text='SUBMIT', command=lambda x=x: print(self. entries[x].get())
self.buttons.append(b)
self.button[x].grid(row=x, column=1)
root = Tk()
app = Application(root)
app.mainloop()
我們的目標是用這個單一的回圈制作多行條目和提交按鈕。我曾嘗試洗掉函式中所有內容前面的self,但無濟于事。
如果for回圈中的range()有1,則一切正常,但對于任何其他數字都不正常。誰能解釋一下?我在高中的一年課程并沒有為我準備好這些東西。
uj5u.com熱心網友回復:
你一直在重置self.entry和self.buttons每次運行for回圈的時候。你需要將self. entries = []和self.buttons = []移到for回圈之前,像這樣:
from tkinter import *
class Application(Frame)。
def __init__(self, master)。
super().__init__(master)
# self.master = master # 無用。
self.submit()
def submit(self)。
self.entry = []
self.buttons = []
for x in range(2)。
e = Entry(self)
e.grid(row=x, column=0)
self. entries.append(e)
b = Button(self, text="SUBMIT", command=lambda x=x: print(self. entries[x].get())
b.grid(row=x, column=1)
self.buttons.append(b)
root = Tk()
app = Application(root)
app.pack()
app.mainloop()
另外還有幾件事情:
self.entry[x].grid(...),你可以使用e.grid(...)master引數傳入任何東西。tk.Frame,但從來沒有在它里面放任何東西,你甚至沒有呼叫app.pack(...)/app.grid(...)import tkinter as tk,而不是from tkinter import *。uj5u.com熱心網友回復:
首先我給了x in range(0)來解決索引外的問題,但是輸出中的按鈕是不可見的,然后我試著把self. entries = []和self.button = []移到for回圈之前。
代碼
def submit(self)。
self.entry = []
self.buttons = []
for x in range(2)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/319444.html
標籤:
