在另一个函数中调用列表 - Python

塔文德·贝恩斯

当单击按钮时,我试图在 tkinter 中获取此列表框以从 sqlite3 数据库更新。我实际上使用 root.after(1000, function) 方法让它工作,但每次更新时光标都会不断重置。

目前我无法在单击按钮时填充列表框。

我会喜欢任何帮助。谢谢!

root=Tk()
ListBox1 = Listbox(root)
ListBox1.grid(row=0, column=0 , sticky='nsew')

def ListUpdate():
    listlist = []

#populates list from sql database in a for loop

    return listlist

def ListPopulate(listlist):
    ListBox1.delete(0, END)
    for i in range(0,len(listlist[i]):
        ListBox1.insert(END, listlist[i])

ButtonUpdate = Button(root, text='Update', command=ListPopulate(listlist))
ButtonUpdate.grid(row=5, column=6, sticky='nsew')
亲切的

command=对你的论点Button呼叫ListPopulate(listlist) 按钮时,创建并分配其结果(这是None因为你不返回从函数的任何信息)作为命令。因此,您已告诉Button对象它没有命令。

在将列表传递到事件驱动系统中它需要去的所有地方时,您自然会遇到问题。一种方法是使列表ListList成为全局变量。在脚本顶部的所有函数之外使用其他变量定义它:

ListBox1 = Listbox(root)
ListBox1.grid(row=0, column=0 , sticky='nsew')
listlist = []

接下来,将第一行更改ListUpdate()为使用切片赋值来清空现有的列表对象,因此您无需在该函数中声明该对象为全局对象。

def ListUpdate():
    listlist[:] = []

然后更改ListPopulate()为不带任何参数,因为它将使用 global listlist

def ListPopulate():

最后,编写您的Button()构造函数以传递ListPopulate而不是调用它。

ButtonUpdate = Button(root, text='Update', command=ListPopulate)

全局变量通常是不好的做法。你可能应该做的是子类化Listbox并给它一个包含列表的属性。那么你的两个函数将是该类的方法。(实际上,您可能希望每次更改内容时都更新屏幕上显示的列表……所以您应该有一种方法,而不是两种。)我将把它留作学习面向对象编程时的练习.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从 Python 中的另一个函数调用列表?

从Python中的另一个文件调用函数

从另一个文件中调用Python函数

从python中的另一个函数调用变量

Python从另一个函数调用一个函数中的函数

Python:从另一个函数中调用一个函数

Python在另一个函数中调用一个函数

在Python(Django)中将一个函数调用到另一个函数中

Python从类中的另一个函数调用一个函数

如何在Python中从另一个函数调用一个函数中的一个函数?

在Python中的另一个函数中获取调用者函数名称?

在一个类中调用一个函数,在另一个类python中调用一个函数

在另一个函数中调用时未定义函数(Python)

【Python】与不同类中的另一个函数调用异步函数?

如何在python 3.8中的另一个函数中调用一个函数?

是否可以在 Python 中的另一个函数中调用一个函数?(网页抓取问题)

无法从另一个 Python 文件调用函数

python - 从另一个函数调用变量

从另一个文件调用Python函数

Python从另一个文件调用函数

Python-从另一个类调用函数

从另一个 Python 文件调用函数

在我的python脚本中调用另一个python函数时遇到importerror

Python:当我在另一个函数中调用一个函数时,没有变化

如何使用递归编写一个在Python中重复调用另一个函数的函数?

将列表从一个函数传递到 Python 类中的另一个函数

python从另一个列表中删除列表

如何从python中的另一个.py文件调用函数?

如何在python中从另一个类调用函数