无法从函数内部编辑元组
Can't edit a tuple from inside a function
我正在 python 编写应用程序。这是函数:
def aircraftListBoxRefresh():
sqlConnect=sqlite3.connect("fglconfdb")
sqlCursor=sqlConnect.cursor()
sqlCursor.execute("SELECT fgAircraftDir FROM fglconfig")
adl=sqlCursor.fetchall()
global aircraftDirectories
for x in adl:
aircraftDirectories=aircraftDirectories+(x,)
我把 print(aircraftDirectories)
放在测试值是否变化。它改变了功能。但是在函数之外它是空的。
我试图用这个访问值:
aircraftDirectories=()
aircraftDir=StringVar(value=aircraftDirectories)
aircraftListBox=Listbox(mainframe,height=7,width=100,listvariable=aircraftDir)
aircraftListBox.place(x=170,y=170)
但是我不能。
非常感谢任何帮助。
问候。
您不能在函数内部或外部的任何地方修改元组,它们是不可变的。也许你想要列表:
def aircraftListBoxRefresh():
sqlConnect=sqlite3.connect("fglconfdb")
sqlCursor=sqlConnect.cursor()
sqlCursor.execute("SELECT fgAircraftDir FROM fglconfig")
adl=sqlCursor.fetchall()
for x in adl:
aircraftDirectories.append(x)
aircraftDirectories=[]
aircraftDir=StringVar(value=aircraftDirectories)
aircraftListBox=Listbox(mainframe,height=7,width=100,listvariable=aircraftDir)
aircraftListBox.place(x=170,y=170)
使用这种方法,因为您正在修改列表而不是重新分配给变量,所以您不需要 global
。
您不能修改元组,但可以替换它。在这个例子中,M[] 是一个元组列表,每个元组包含两个数字。我想将元组的第一个数字替换为 0,但保留第二个数字。
M[j] = (0, M[j][1])
我正在 python 编写应用程序。这是函数:
def aircraftListBoxRefresh():
sqlConnect=sqlite3.connect("fglconfdb")
sqlCursor=sqlConnect.cursor()
sqlCursor.execute("SELECT fgAircraftDir FROM fglconfig")
adl=sqlCursor.fetchall()
global aircraftDirectories
for x in adl:
aircraftDirectories=aircraftDirectories+(x,)
我把
print(aircraftDirectories)
放在测试值是否变化。它改变了功能。但是在函数之外它是空的。
我试图用这个访问值:
aircraftDirectories=()
aircraftDir=StringVar(value=aircraftDirectories)
aircraftListBox=Listbox(mainframe,height=7,width=100,listvariable=aircraftDir)
aircraftListBox.place(x=170,y=170)
但是我不能。 非常感谢任何帮助。 问候。
您不能在函数内部或外部的任何地方修改元组,它们是不可变的。也许你想要列表:
def aircraftListBoxRefresh():
sqlConnect=sqlite3.connect("fglconfdb")
sqlCursor=sqlConnect.cursor()
sqlCursor.execute("SELECT fgAircraftDir FROM fglconfig")
adl=sqlCursor.fetchall()
for x in adl:
aircraftDirectories.append(x)
aircraftDirectories=[]
aircraftDir=StringVar(value=aircraftDirectories)
aircraftListBox=Listbox(mainframe,height=7,width=100,listvariable=aircraftDir)
aircraftListBox.place(x=170,y=170)
使用这种方法,因为您正在修改列表而不是重新分配给变量,所以您不需要 global
。
您不能修改元组,但可以替换它。在这个例子中,M[] 是一个元组列表,每个元组包含两个数字。我想将元组的第一个数字替换为 0,但保留第二个数字。
M[j] = (0, M[j][1])