Я создаю создателя персонажа, и мне нужно спросить пользователя, каков пол его персонажа. У меня есть списки местоимений для обозначения в зависимости от пола, но по какой-то причине они эффективны только с последним вариантом. Я использовал радиокнопки, чтобы пользователь мог выбрать пол своего персонажа.
У меня есть последний вариант — быть гендерно-нейтральным, и каждый раз, когда я запускаю программу, независимо от того, что я выбираю, она всегда использует гендерно-нейтральные местоимения. Я не уверен, как еще я могу это исправить, я пытался создать каждую кнопку отдельно вне цикла 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()
lambda
со списком функций. Это затрудняет понимание кода и его отладку. Создайте правильную функцию специально для радиокнопок. - person Bryan Oakley   schedule 15.01.2021