我正在制作一个角色创建者,我需要询问用户他们角色的性别是什么。我有根据性别引用的代词列表,但由于某种原因,它们仅对最后一个选项有效。我一直在使用单选按钮让用户选择角色的性别。
我有最后一个选择是不分性别,每次运行程序时,无论我选择什么,它总是使用不分性别的代词。我不确定我还能如何解决这个问题,我尝试在 for 循环之外单独创建每个按钮,我尝试将函数放在不同的位置,但没有任何效果。
这是我的代码片段:
class gender(tk.Frame):
def __init__(self, master):
global gender
name = e1.get()
tk.Frame.__init__(self, master)
tk.Label(self, text=("What gender is your character?"), bg='#e6f7f5', fg='#33271b', font='Fixedsys 24 bold').pack()
greet = ("Hey {}!".format(name))
tk.Label(self, text=(greet)).pack()
v = tk.IntVar()
def ShowChoice():
print(v.get())
genderchoices = [('Male', 1), ('Female', 2), ('Other', 3)]
def setgender(x):
global gender
gender = x
return gender
for g, val in genderchoices:
tk.Radiobutton(self,
text=g,
padx=20,
variable=v,
value=val,
command=lambda:[ShowChoice,setgender(val)]).pack(anchor=tk.W)
tk.Button(self, text="Next",
command=lambda: [master.switch_frame(PageThree)]).pack()
class PageThree(tk.Frame):
def __init__(self, master):
global gender
tk.Frame.__init__(self, master)
next = "hey {}.".format(name)
more=0
if gender == 1:
more = "i like {}!".format(mpronouns[1])
if gender == 2:
more = "i like {}!".format(fpronouns[1])
if gender == 3:
more = "i like {}!".format(npronouns[1])
tk.Label(self, text=(next)).pack()
tk.Label(self, text=(more)).pack()