我有一段代码,它从 sqlite 查询数据库,并通过一个函数将每一行传递给一个类,然后通过 *args 传递给一个类。问题是它每次通过 *args 时都会在它的末尾添加一个 ,)。我每次通过它后都可以获得第 0 个索引以摆脱它,但我并不总是有一些东西通过 *args,在这种情况下,它会出现索引超出范围的错误。我认为有一种更简单的方法可以解决这个问题,但我不知道。有什么建议?
不是下面的确切代码,但您明白我的问题。
from tkinter import *
from tkinter import ttk
class App(Tk):
def __init__(self,*args,**kwargs):
Tk.__init__(self)
btn1 = ttk.Button(self, command = self.EditLoadout)
btn1.pack()
def EditLoadout(self):
self.ticketquery = ['cat','hat','bat']
for x in self.ticketquery:
self.add_product(x)
def add_product(self, *args):
self.newprod = NewProduct(self,args)
self.newprod.pack(anchor=W)
class NewProduct(ttk.Frame):
def __init__(self,container,*args):
print(args)
Frame.__init__(self)
my_app = App()
my_app.mainloop()
从我从您的代码中可以看出,您尝试通过将变量args
from传递add_product
给 NewProduct__init__
函数来添加新产品。基于此,您所做的可能不会像您想象的那样解析 args。
一个*
运算符用于将不确定数量的参数打包到元组对象类型中。如果你打印一个元组,它看起来类似于: (1, 2, 3, 4) 当你通过另一个接收 的函数传递一个元组时*args
,你只传递了一个参数。
如果您想将args
不确定数量的变量传递回另一个函数,您可以*args
再次使用。一个例子如下所示:
def tupleToList(*args):
print(list(args))
def passThroughFunction(*args):
print(args) # Prints (1, 2, 3, 4)
tupleToList(args) # Prints [(1, 2, 3, 4)]
tupleToList(*args) # Prints [1, 2, 3, 4]
passThroughFunction(1,2,3,4)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句