2

我正在制作一个角色创建者,我需要询问用户他们角色的性别是什么。我有根据性别引用的代词列表,但由于某种原因,它们仅对最后一个选项有效。我一直在使用单选按钮让用户选择角色的性别。

我有最后一个选择是不分性别,每次运行程序时,无论我选择什么,它总是使用不分性别的代词。我不确定我还能如何解决这个问题,我尝试在 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()
4

0 回答 0