我有一个这样的代码
def inputs():
q_number = int(1)
number_of_q = int(0)
q = {}
x = {}
y = {}
xxxx = 1
for i in range(4):
C = float(qq[xxxx].get())
X = float(xxx[xxxx].get())
Y = float(yy[xxxx].get())
if C != 0 or C != "":
q[q_number] = C
x[q_number] = X
y[q_number] = Y
q_number += 1
number_of_q += 1
它工作得很好,我唯一的问题是我试图在函数之外打印对数 q , x , y ,这样我就可以在其他东西中使用它们,但它不起作用
我尝试将函数a写为正常且全局的函数外部的双数q x y
def inputs():
q_number = int(1)
number_of_q = int(0)
q = {}
x = {}
y = {}
xxxx = 1
for i in range(4):
C = float(qq[xxxx].get())
X = float(xxx[xxxx].get())
Y = float(yy[xxxx].get())
if C != 0 or C != "":
q[q_number] = C
x[q_number] = X
y[q_number] = Y
q_number += 1
number_of_q += 1
global number_of_q, q_number, q, x, y
print(number_of_q, q_number, q, x, y)
但是程序给了我一个错误(NameError:name'number_of_q'未定义) 有人可以帮我吗?
下面创建了 StringVar 组。
update_fltdb
函数将 StringVar 组镜像到 fltdb
作为浮点值。
import tkinter as tk
root = tk.Tk()
SVDB = ([], [], []) #groups of StringVar
fltdb = ([], [], []) #groups of float
#mirror SVDB as float results
def update_fltdb() -> None:
fltdb = ([], [], [])
for group, out in zip(SVDB, fltdb):
for sv in group:
try : out.append(float(sv.get()))
except:
sv.set('0.0')
out.append(0.0)
print(fltdb)
#build stringvar database
for x, group in enumerate(SVDB):
for y in range(4):
(sv := tk.StringVar(root)).set(f'{x}.{y}')
(ent := tk.Entry(root, textvariable=sv)).grid(column=x, row=y, sticky='nswe')
group.append(sv)
#button
button = tk.Button(root, text='click', command=update_fltdb)
button.grid(column=x, row=y+1, sticky='e')
button.invoke() #update_fltdb
if __name__ == '__main__':
root.mainloop()