gpt4 book ai didi

python - 名称错误 : name "apply" is not defined

转载 作者:行者123 更新时间:2023-11-28 20:22:22 25 4
gpt4 key购买 nike

当我在多列表框上向下滚动时出现以下错误。希望你能帮助我:

  File "...", line 44, in _scroll
apply(l.yview, args)
Name error: name "apply" is not defined

这是我的代码

from tkinter import *

class MultiListbox(Frame):
def __init__(self, master, lists):
Frame.__init__(self, master)
self.lists = []
for l,w in lists:
frame = Frame(self); frame.pack(side=LEFT, expand=YES, fill=BOTH)
Label(frame, text=l, borderwidth=1, relief=RAISED).pack(fill=X)
lb = Listbox(frame, width=w, borderwidth=0, selectborderwidth=0,
relief=FLAT, exportselection=FALSE)
lb.pack(expand=YES, fill=BOTH)
self.lists.append(lb)
lb.bind('<B1-Motion>', lambda e, s=self: s._select(e.y))
lb.bind('<Button-1>', lambda e, s=self: s._select(e.y))
lb.bind('<Leave>', lambda e: 'break')
lb.bind('<B2-Motion>', lambda e, s=self: s._b2motion(e.x, e.y))
lb.bind('<Button-2>', lambda e, s=self: s._button2(e.x, e.y))
frame = Frame(self); frame.pack(side=LEFT, fill=Y)
Label(frame, borderwidth=1, relief=RAISED).pack(fill=X)
sb = Scrollbar(frame, orient=VERTICAL, command=self._scroll)
sb.pack(expand=YES, fill=Y)

def yview(self, *args):
"""connect the yview action together"""
self.lb1.yview(*args)
self.lb2.yview(*args)

def _select(self, y):
row = self.lists[0].nearest(y)
self.selection_clear(0, END)
self.selection_set(row)
return 'break'

def _button2(self, x, y):
for l in self.lists: l.scan_mark(x, y)
return 'break'

def _b2motion(self, x, y):
for l in self.lists: l.scan_dragto(x, y)
return 'break'

def _scroll(self, *args):
for l in self.lists:
apply(l.yview, args)

def curselection(self):
return self.lists[0].curselection()

def delete(self, first, last=None):
for l in self.lists:
l.delete(first, last)

def get(self, first, last=None):
result = []
for l in self.lists:
result.append(l.get(first,last))
if last: return apply(map, [None] + result)
return result

def index(self, index):
self.lists[0].index(index)

def insert(self, index, *elements):
for e in elements:
i = 0
for l in self.lists:
l.insert(index, e[i])
i = i + 1

def size(self):
return self.lists[0].size()

def see(self, index):
for l in self.lists:
l.see(index)

def selection_anchor(self, index):
for l in self.lists:
l.selection_anchor(index)

def selection_clear(self, first, last=None):
for l in self.lists:
l.selection_clear(first, last)

def selection_includes(self, index):
return self.lists[0].selection_includes(index)

def selection_set(self, first, last=None):
for l in self.lists:
l.selection_set(first, last)

if __name__ == '__main__':
tk = Tk()
Label(tk, text='MultiListbox').pack()
mlb = MultiListbox(tk, (('Clave', 20), ('Descripcion', 20), ('Existencia', 20)))

lineas = len(open("productos-doc1.txt").readlines())
totalLineas=(int(lineas))

try:
x = 0
while 0 != totalLineas:
abrir = open("productos-doc1.txt","r+")#ABRE EL ARCHIVO
leer = abrir.readlines()
renglon = leer[x]
splitRenglon = renglon.split("'")
clave = splitRenglon[0]
descripcion = splitRenglon[1]
existencia = splitRenglon[3]
mlb.insert(END, (clave, descripcion, existencia))
mlb.pack(expand=YES,fill=BOTH)

x = x+1
except IndexError:
mlb.insert(END,"FINISH" )

tk.mainloop()

最佳答案

您正在尝试在 Python 3 中使用 Python 2 中的函数。Python 2 apply() function已经弃用,从 Python 3 中完全删除,也不应该在 Python 2 中使用。来自文档:

Deprecated since version 2.3: Use function(*args, **keywords) instead of apply(function, args, keywords) (see Unpacking Argument Lists).

改用*args:

l.yview(*args)

if last: return map(None, *result)

关于python - 名称错误 : name "apply" is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com