gpt4 book ai didi

python - tkinter python 的全局变量问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:02 27 4
gpt4 key购买 nike

我正在尝试创建一个简单的接口(interface)来访问具有第一个、最后一个、上一个和下一个功能的名称数组。但是我用作位置跟踪器的全局变量不起作用。我已经提到了各种问题。非常感谢您的帮助。这是代码。

from tkinter import Tk, Label, Entry, Button, StringVar, IntVar

window = Tk()

name_array = [('a1','a2','a3'), ('b1','b2','b3'), ('c1','c2','c3'),('d1','d2','d3')]
global position_track
position_track = IntVar()

first_name = StringVar()
last_name = StringVar()
email = StringVar()

def return_value(pos):
first_name.set(name_array[pos][0])
last_name.set(name_array[pos][1])
email.set(name_array[pos][2])

def update_value(pos):
name_array[pos] = (first_name.get(), last_name.get(), email.get())

def first_value():
global position_track
return_value(0)
postion_track.set(0)

def last_value():
global position_track
return_value(-1)
postion_track.set(-1)

def next_value():
global position_track
if position_track.get() == len(name_array):
position_track.set(1)
temp = postion_track.get()
return_value(temp + 1)
postion_track.set(temp + 1)

def prev_value():
global position_track
if position_track.get() == -1:
position_track.set(len(name_array - 1))
temp = postion_track.get()
return_value(temp - 1)
postion_track.set(temp - 1)

label_first_name = Label(window, text = 'First Name:', justify = 'right', padx = 5)
entry_first_name = Entry(window, textvariable = first_name)
label_last_name = Label(window, text = 'Last Name:', justify = 'right', padx = 5)
entry_last_name = Entry(window, textvariable = last_name)
label_email = Label(window, text = 'Email Address:', justify = 'right', padx = 5)
entry_email = Entry(window, textvariable = email)


button_first = Button(window, text = 'First', command = first_value)
button_last = Button(window, text = 'Last', command = last_value)
button_prev = Button(window, text = 'Prev', command = prev_value)
button_next = Button(window, text = 'Next', command = next_value)
button_quit = Button(window, text = 'Quit')
button_quit.configure(command=window.destroy)

labels = [label_first_name, label_last_name, label_email]
entries = [entry_first_name, entry_last_name, entry_email]
buttons = [button_first, button_last, button_prev, button_next, button_last, button_quit]


for i in range(3):
labels[i].grid(row = i, column = 0, sticky = 'W')
entries[i].grid(row = i, column = 1, columnspan = 6)

for j in range(6):
buttons[j].grid(row = 3, column = j, sticky = 'E')




window.mainloop()

最佳答案

错别字太多。另外,您不需要在最外层的程序空间中声明一个 global,只需在函数 defs 中声明即可。更正的工作代码 ->

from tkinter import Tk, Label, Entry, Button, StringVar, IntVar

window = Tk()

name_array = [('a1','a2','a3'), ('b1','b2','b3'), ('c1','c2','c3'),('d1','d2','d3')]
position_track = IntVar()

first_name = StringVar()
last_name = StringVar()
email = StringVar()

def return_value(pos):
first_name.set(name_array[pos][0])
last_name.set(name_array[pos][1])
email.set(name_array[pos][2])

def update_value(pos):
name_array[pos] = (first_name.get(), last_name.get(), email.get())

def first_value():
global position_track
return_value(0)
position_track.set(0)

def last_value():
global position_track
return_value(-1)
position_track.set(-1)

def next_value():
global position_track
if position_track.get() == len(name_array):
position_track.set(1)
temp = position_track.get()
return_value(temp + 1)
position_track.set(temp + 1)

def prev_value():
global position_track
if position_track.get() == -1:
position_track.set(len(name_array) - 1)
temp = position_track.get()
return_value(temp - 1)
position_track.set(temp - 1)

label_first_name = Label(window, text = 'First Name:', justify = 'right', padx = 5)
entry_first_name = Entry(window, textvariable = first_name)
label_last_name = Label(window, text = 'Last Name:', justify = 'right', padx = 5)
entry_last_name = Entry(window, textvariable = last_name)
label_email = Label(window, text = 'Email Address:', justify = 'right', padx = 5)
entry_email = Entry(window, textvariable = email)


button_first = Button(window, text = 'First', command = first_value)
button_last = Button(window, text = 'Last', command = last_value)
button_prev = Button(window, text = 'Prev', command = prev_value)
button_next = Button(window, text = 'Next', command = next_value)
button_quit = Button(window, text = 'Quit')
button_quit.configure(command=window.destroy)

labels = [label_first_name, label_last_name, label_email]
entries = [entry_first_name, entry_last_name, entry_email]
buttons = [button_first, button_last, button_prev, button_next, button_last, button_quit]


for i in range(3):
labels[i].grid(row = i, column = 0, sticky = 'W')
entries[i].grid(row = i, column = 1, columnspan = 6)

for j in range(6):
buttons[j].grid(row = 3, column = j, sticky = 'E')

window.mainloop()

关于python - tkinter python 的全局变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19980907/

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