使用python 3在tkinter中使用单选按钮有困难

使用python 3在tkinter中使用单选按钮有困难,python,tkinter,Python,Tkinter,我试图理解我的代码中的错误,但是我变瞎了,哈哈!我的self.ace单选按钮需要返回另一个已在PokerInterface中编写的模块。如果我选择SANS,游戏将在没有通配符的情况下进行,如果用户选择AVEC,则AS将变为通配符。提前谢谢 马特 类接口(Tk): limite_lancers=3 秩序=0 元组_mains=[] 联合登记处=[] 定义初始化(自): super()。\uuuu init\uuuuu() self.title(“扑克游戏”) 自我协议(“WM\u删除\u窗口”,自

我试图理解我的代码中的错误,但是我变瞎了,哈哈!我的self.ace单选按钮需要返回另一个已在PokerInterface中编写的模块。如果我选择SANS,游戏将在没有通配符的情况下进行,如果用户选择AVEC,则AS将变为通配符。提前谢谢 马特

类接口(Tk):
limite_lancers=3
秩序=0
元组_mains=[]
联合登记处=[]
定义初始化(自):
super()。\uuuu init\uuuuu()
self.title(“扑克游戏”)
自我协议(“WM\u删除\u窗口”,自我确认\u退出)
self.menubar=菜单(self)
菜单1=菜单(self.menubar,tearoff=0)
菜单1.add_命令(label=“Nouvelle partie”,command=self.definir_partie)
菜单1.add_命令(label=“Poursuivre une partie”,command=self.reprendre_partie)
菜单1.添加分隔符()
菜单1.添加命令(label=“Quitter”,command=self.confirmation\u Quitter)
self.menubar.add\u级联(label=“Partie”,menu=menu1)
menu2=菜单(self.menubar,tearoff=0)
menu2.addèu命令(label=“Afficher les règles”,command=self.Afficherèu regles)
self.menubar.addèu级联(label=“Règles du jeu”,menu=menu2)
self.config(menu=self.menubar)
self.titre_principal=标签(self,text=“Jeu du Poker As”,font=(“arial”,28),fg=“green”,
帕迪=20)
self.bienvenue=标签(self,text=“bienvenue au jeu du Poker As!”
“\nCliquez sur \“新党\”浇注起动器”,
font=(“arial”,20),fg=“黑色”,pady=10)
self.bouton\u nouvelle\u partie=按钮(self,text=“nouvelle partie”,command=self.definir\u partie,
bg=“浅绿色”,padx=20,pady=10,高度=3,宽度=15,
font=(“arial”,16),fg=“黑色”)
self.bouton\u reprendre\u partie=按钮(self,text=“reprendre une partie”,command=self.reprendre\u partie,
bg=“红色”,padx=20,pady=10,高度=5,宽度=25,
font=(“arial”,16),fg=“黑色”,state=禁用)
self.bouton\u quitter=按钮(self,text=“quitter”,command=self.confirmation\u quitter,bg=“浅蓝色”,padx=20,
pady=10,高度=3,宽度=15,字体=(“arial”,16),fg=“黑色”)
self.jouer_courant=Label(self,text=,font=(“arial”,15),anchor=CENTER,justify=CENTER)
self.tapis=Canvas(self,高度=300,宽度=500,bg=“绿色”)
self.bouton\u lancer=按钮(self,text=“lancer”,padx=20,command=self.lancer\u des)
self.relancer\u quel\u de=标签(self,text=“Quels dés voulez vous relancer?”
“\n nDécoches toutes les cases si vous volez terminer votre tour”)
self.var1、self.var2、self.var3、self.var4、self.var5=IntVar()、IntVar()、IntVar()、IntVar()、IntVar()
self.var1.set(0)
self.var2.set(0)
self.var3.set(0)
self.var4.set(0)
self.var5.set(0)
self.de_1=检查按钮(self,text=“Dé1”,变量=self.var1,onvalue=1,offvalue=0)
self.de_2=检查按钮(self,text=“Dé2”,变量=self.var2,onvalue=1,offvalue=0)
self.de_3=检查按钮(self,text=“Dé3”,变量=self.var3,onvalue=1,offvalue=0)
self.de_4=检查按钮(self,text=“Dé4”,变量=self.var4,onvalue=1,offvalue=0)
self.de_5=检查按钮(self,text=“Dé5”,变量=self.var5,onvalue=1,offvalue=0)
self.bouton_relancer=按钮(self,text=“relancer déséselectionnés”,padx=20,command=self.relancer_des)
self.bouton\u ok\u prochain\u jouer=按钮(self,text=“ok”,command=self.passer\u jouer\u suivant)
self.sauvegarder=按钮(self,text=“sauvegarder”,command=self.sauvegarder\u partie,state=DISABLED)
self.quitter=按钮(self,text=“quitter”,command=self.confirmation\u quitter)
self.bouton\u rejouer=按钮(self,text=“rejouer”,command=self.refaire\u une\u partie)
self.question_rejouer=标签(self,text=“Voulez vous rejouer?”)
self.afficher\u menu\u principal()
def afficher_菜单_主体(自身):
self.titre_principal.pack()
self.bienvenue.pack()
self.bouton_nouvelle_partie.pack()
如果path.isfile(“Enregistrement.txt”)==True:
self.bouton_reprendre_partie[“state”]=“正常”
self.bouton_reprendre_partie.pack()
self.bouton_quitter.pack()
def缓存器菜单主体(自身):
self.titre\u principal.pack\u忘记()
self.bienvenue.pack_忘记()
self.bouton_nouvelle_partie.pack_忘记()
self.bouton\u reprendre\u partie.pack\u忘记()
self.bouton\u quitter.pack\u忘记()
定义附加方(自身):
self.cacher\u menu\u principal()
self.jouer\u courant.grid(行=0,列=0,列span=11,sticky=“N”)
self.tapis.grid(行=1,列=0,行span=11,列span=11)
self.bouton_lancer.grid(行=13,列=5)
self.sauvegarder.grid(行=1,列=13)
self.sauvegarder[“state”]=“normal”
self.quitter.grid(行=2,列=13)
self.partie=LancerPartie(self,self.nom_jouers)
self.ordre=self.partie.rendre_ordre()
self.mettre_a_jour_joeur_courant()
self.texte1=标签(self,text=self.nom_jouers[self.ordre[0]],padx=30,font=(“arial”,15))
self.text1.grid(行=1,列=11,列span=2)
self.texte_combinaison1=标签(self,text=“Combinaison:\t{}”.format(“”),anchor=W)
self.texte_combination1.grid(行=2,列=11)
self.texte_main1=Label(self,text=“Main finale:\t{}”.format(“”),anchor=W)
self.texte_main1.grid(行=3,列=11)
self.texte2=Label(self,text=self.nom_jouers[self.ordre[1]],padx=30,font=(“arial”,15))
选择
class PokerInterface(Tk):
    limite_lancers = 3
    ordre_joueur = 0
    tuples_mains = []
    combinaisons_enregistrees = []

    def __init__(self):
        super().__init__()
        self.title("Poker As")
        self.protocol("WM_DELETE_WINDOW", self.confirmation_quitter)

        self.menubar = Menu(self)
        menu1 = Menu(self.menubar, tearoff=0)
        menu1.add_command(label="Nouvelle partie", command=self.definir_partie)
        menu1.add_command(label="Poursuivre une partie", command=self.reprendre_partie)

        menu1.add_separator()
        menu1.add_command(label="Quitter", command=self.confirmation_quitter)
        self.menubar.add_cascade(label="Partie", menu=menu1)

        menu2 = Menu(self.menubar, tearoff=0)
        menu2.add_command(label="Afficher les règles", command=self.afficher_regles)
        self.menubar.add_cascade(label="Règles du jeu", menu=menu2)

        self.config(menu=self.menubar)

        self.titre_principal = Label(self, text="Jeu du Poker As", font=("arial", 28), fg="green",
                                     pady=20)
        self.bienvenue = Label(self, text="Bienvenue au jeu du Poker As!"
                                          "\nCliquez sur \"Nouvelle partie\" pour commencer",
                               font=("arial", 20), fg="black", pady=10)
        self.bouton_nouvelle_partie = Button(self, text="Nouvelle partie", command=self.definir_partie,
                                             bg="light green",padx=20, pady=10, height=3, width=15,
                                             font=("arial", 16), fg="black")
        self.bouton_reprendre_partie = Button(self, text="Reprendre une partie", command=self.reprendre_partie,
                                              bg="red",padx=20, pady=10, height=5, width=25,
                                              font=("arial", 16), fg="black",state=DISABLED)

        self.bouton_quitter = Button(self, text="Quitter", command=self.confirmation_quitter, bg="light blue", padx=20,
                                     pady=10, height=3, width=15, font=("arial", 16), fg="black")

        self.joueur_courant = Label(self, text="", font=("arial", 15), anchor=CENTER, justify=CENTER)

        self.tapis = Canvas(self, height=300, width=500, bg="green")

        self.bouton_lancer = Button(self, text="Lancer", padx=20, command=self.lancer_des)
        self.relancer_quel_de = Label(self, text="Quels dés voulez-vous relancer?"
                                                 "\nDécochez toutes les cases si vous voulez terminer votre tour")

        self.var1, self.var2, self.var3, self.var4, self.var5 = IntVar(), IntVar(), IntVar(), IntVar(), IntVar()
        self.var1.set(0)
        self.var2.set(0)
        self.var3.set(0)
        self.var4.set(0)
        self.var5.set(0)

        self.de_1 = Checkbutton(self, text="Dé 1", variable=self.var1, onvalue=1, offvalue=0)
        self.de_2 = Checkbutton(self, text="Dé 2", variable=self.var2, onvalue=1, offvalue=0)
        self.de_3 = Checkbutton(self, text="Dé 3", variable=self.var3, onvalue=1, offvalue=0)
        self.de_4 = Checkbutton(self, text="Dé 4", variable=self.var4, onvalue=1, offvalue=0)
        self.de_5 = Checkbutton(self, text="Dé 5", variable=self.var5, onvalue=1, offvalue=0)

        self.bouton_relancer = Button(self, text="Relancer dés sélectionnés", padx=20, command=self.relancer_des)

        self.bouton_ok_prochain_joueur = Button(self, text="OK", command=self.passer_joueur_suivant)

        self.sauvegarder = Button(self, text="Sauvegarder", command=self.sauvegarder_partie, state=DISABLED)
        self.quitter = Button(self, text="Quitter", command=self.confirmation_quitter)
        self.bouton_rejouer = Button(self, text="Rejouer", command=self.refaire_une_partie)
        self.question_rejouer = Label(self, text="Voulez-vous rejouer?")

        self.afficher_menu_principal()

    def afficher_menu_principal(self):
        self.titre_principal.pack()
        self.bienvenue.pack()
        self.bouton_nouvelle_partie.pack()
        if path.isfile("Enregistrement.txt") == True:
            self.bouton_reprendre_partie["state"] = "normal"
        self.bouton_reprendre_partie.pack()
        self.bouton_quitter.pack()

    def cacher_menu_principal(self):
        self.titre_principal.pack_forget()
        self.bienvenue.pack_forget()
        self.bouton_nouvelle_partie.pack_forget()
        self.bouton_reprendre_partie.pack_forget()
        self.bouton_quitter.pack_forget()

    def afficher_partie(self):
        self.cacher_menu_principal()

        self.joueur_courant.grid(row=0, column=0, columnspan=11, sticky="N")
        self.tapis.grid(row=1, column=0, rowspan=11, columnspan=11)
        self.bouton_lancer.grid(row=13, column=5)

        self.sauvegarder.grid(row=1, column=13)
        self.sauvegarder["state"] = "normal"
        self.quitter.grid(row=2, column=13)

        self.partie = LancerPartie(self, self.nom_joueurs)
        self.ordre = self.partie.rendre_ordre()
        self.mettre_a_jour_joueur_courant()

        self.texte1 = Label(self, text=self.nom_joueurs[self.ordre[0]], padx=30, font=("arial", 15))
        self.texte1.grid(row=1, column=11, columnspan=2)
        self.texte_combinaison1 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
        self.texte_combinaison1.grid(row=2, column=11)
        self.texte_main1 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
        self.texte_main1.grid(row=3, column=11)

        self.texte2 = Label(self, text=self.nom_joueurs[self.ordre[1]], padx=30, font=("arial", 15))
        self.texte2.grid(row=4, column=11, columnspan=2)
        self.texte_combinaison2 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
        self.texte_combinaison2.grid(row=5, column=11)
        self.texte_main2 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
        self.texte_main2.grid(row=6, column=11)

        if self.nombre_joueurs == 3:
            self.texte3 = Label(self, text=self.nom_joueurs[self.ordre[2]], padx=30, font=("arial", 15))
            self.texte3.grid(row=7, column=11, columnspan=2)
            self.texte_combinaison3 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
            self.texte_combinaison3.grid(row=8, column=11)
            self.texte_main3 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
            self.texte_main3.grid(row=9, column=11)

    def afficher_partie_enregistree(self):
        self.cacher_menu_principal()
        self.mettre_a_jour_joueur_courant()
        self.tapis.grid(row=1, column=0, rowspan=11, columnspan=11)
        self.bouton_lancer.grid(row=13, column=5)
        self.sauvegarder.grid(row=1, column=13)
        self.sauvegarder["state"] = "normal"
        self.quitter.grid(row=2, column=13)

        self.texte1 = Label(self, text=self.nom_joueurs[self.ordre[0]], padx=30, font=("arial", 15))
        self.texte1.grid(row=1, column=11, columnspan=2)
        self.texte_combinaison1 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
        self.texte_combinaison1.grid(row=2, column=11)
        self.texte_main1 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
        self.texte_main1.grid(row=3, column=11)

        self.texte2 = Label(self, text=self.nom_joueurs[self.ordre[1]], padx=30, font=("arial", 15))
        self.texte2.grid(row=4, column=11, columnspan=2)
        self.texte_combinaison2 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
        self.texte_combinaison2.grid(row=5, column=11)
        self.texte_main2 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
        self.texte_main2.grid(row=6, column=11)

        if self.nombre_joueurs == 3:
            self.texte3 = Label(self, text=self.nom_joueurs[self.ordre[2]], padx=30, font=("arial", 15))
            self.texte3.grid(row=7, column=11, columnspan=2)
            self.texte_combinaison3 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
            self.texte_combinaison3.grid(row=8, column=11)
            self.texte_main3 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
            self.texte_main3.grid(row=9, column=11)

        if len(PokerInterface.tuples_mains) == 1:
            self.texte_combinaison1.grid_forget()
            self.texte_combinaison1 = Label(self, text="Combinaison :\t {}"
                                            .format(PokerInterface.combinaisons_enregistrees[0]), anchor=W)
            self.texte_combinaison1.grid(row=2, column=11)
            self.texte_main1.grid_forget()
            self.texte_main1 = Label(self, text="Main finale :\t {}".format(PokerInterface.tuples_mains[0][1]), anchor=W)
            self.texte_main1.grid(row=3, column=11)

        elif len(PokerInterface.tuples_mains) == 2:
            self.texte_combinaison1.grid_forget()
            self.texte_combinaison1 = Label(self, text="Combinaison :\t {}"
                                            .format(PokerInterface.combinaisons_enregistrees[0]), anchor=W)
            self.texte_combinaison1.grid(row=2, column=11)
            self.texte_main1.grid_forget()
            self.texte_main1 = Label(self, text="Main finale :\t {}".format(PokerInterface.tuples_mains[0][1]), anchor=W)
            self.texte_main1.grid(row=3, column=11)

            self.texte_combinaison2.grid_forget()
            self.texte_combinaison2 = Label(self, text="Combinaison :\t {}"
                                            .format(PokerInterface.combinaisons_enregistrees[1]), anchor=W)
            self.texte_combinaison2.grid(row=4, column=11)
            self.texte_main2.grid_forget()
            self.texte_main2 = Label(self, text="Main finale :\t {}".format(PokerInterface.tuples_mains[1][1]), anchor=W)
            self.texte_main2.grid(row=5, column=11)

    def mettre_a_jour_joueur_courant(self):
        self.joueur_courant.grid_forget()
        self.joueur_courant = Label(self, text=self.nom_joueurs[self.ordre[PokerInterface.ordre_joueur]],
                                    font=("arial", 15), anchor=CENTER, justify=CENTER)
        self.joueur_courant.grid(row=0, column=0, columnspan=11, sticky="N")

    def afficher_regles(self):
        ReglesDuJeu(self)

    def definir_partie(self):
        afficher_options = OptionDePartie(self)
        self.nombre_joueurs, self.nom_joueurs = afficher_options.reprendre_donnees()
        self.joueurs = []
        if afficher_options.continuer:
            self.afficher_partie()
            for nom in self.nom_joueurs:
                self.joueurs.append(Joueur(nom))

    def reprendre_partie(self):
        f = open("Enregistrement.txt", "rb")
        PokerInterface.limite_lancers, PokerInterface.ordre_joueur, PokerInterface.tuples_mains,\
        self.joueurs, self.nombre_joueurs, self.nom_joueurs, self.ordre,\
        PokerInterface.combinaisons_enregistrees = load(f)
        self.afficher_partie_enregistree()
        f.close()

    def confirmation_quitter(self):
        if messagebox.askokcancel("Quitter", "Voulez-vous vraiment quitter le jeu?"):
            self.destroy()

    def sauvegarder_partie(self):
        f = open("Enregistrement.txt", "wb")
        dump([PokerInterface.limite_lancers, PokerInterface.ordre_joueur, PokerInterface.tuples_mains,
              self.joueurs, self.nombre_joueurs, self.nom_joueurs, self.ordre,
              PokerInterface.combinaisons_enregistrees], f)
        f.close()

    def lancer_des(self):
        if PokerInterface.ordre_joueur == 0:
            self.combinaison = Combinaison()
            self.texte_combinaison1.grid_forget()
            self.texte_combinaison1 = Label(self, text="Combinaison :\t {}".format(str(self.combinaison)), anchor=W)
            self.texte_combinaison1.grid(row=2, column=11)

        elif PokerInterface.ordre_joueur == 1:
            self.combinaison = Combinaison()
            self.texte_combinaison2.grid_forget()
            self.texte_combinaison2 = Label(self, text="Combinaison :\t {}".format(str(self.combinaison)), anchor=W)
            self.texte_combinaison2.grid(row=5, column=11)

        elif PokerInterface.ordre_joueur == 2:
            self.combinaison = Combinaison()
            self.texte_combinaison3.grid_forget()
            self.texte_combinaison3 = Label(self, text="Combinaison :\t {}".format(str(self.combinaison)), anchor=W)
            self.texte_combinaison3.grid(row=8, column=11)

        if self.combinaison.nb_lancers == PokerInterface.limite_lancers:
            self.bouton_lancer.grid_forget()
            self.montrer_la_main()

        else:
            self.bouton_lancer.grid_forget()
            self.sauvegarder["state"] = "disabled"
            self.relancer_quel_de.grid(row=13, column=1, columnspan=6)

            self.de_1.grid(row=14, column=2)
            self.de_2.grid(row=14, column=3)
            self.de_3.grid(row=14, column=4)
            self.de_4.grid(row=14, column=5)
            self.de_5.grid(row=14, column=6)

            self.bouton_relancer.grid(row=15, column=1, columnspan=6)
            self.tapis_texte = self.tapis.create_text(250, 50)
            self.tapis_combinaison = self.tapis.create_text(250, 200, anchor=CENTER)
            self.tapis.itemconfig(self.tapis_texte, text="Voici votre combinaison", font=("arial", 20))
            self.tapis.itemconfig(self.tapis_combinaison, text=str(self.combinaison), font=("arial", 40))

    def relancer_des(self):
            liste_relance = [self.var1, self.var2, self.var3, self.var4, self.var5]
            des_a_relancer = []
            for item in liste_relance:
                if item.get() == 1:
                    des_a_relancer.append(liste_relance.index(item))
            if des_a_relancer == []:
                PokerInterface.limite_lancers = self.combinaison.nb_lancers
                self.montrer_la_main()

            else:
                self.combinaison.relancer_des(des_a_relancer)

                self.tapis = Canvas(self, height=300, width=500, bg="green")
                self.tapis.grid_forget()
                self.tapis.grid(row=1, column=0, rowspan=11, columnspan=11)
                self.tapis_texte = self.tapis.create_text(250, 50)
                self.tapis_combinaison = self.tapis.create_text(250,200, anchor=CENTER)
                self.tapis.itemconfig(self.tapis_texte, text= "Voici votre nouvelle combinaison", font=("arial", 20))
                self.tapis.itemconfig(self.tapis_combinaison, text=str(self.combinaison), font=("arial", 40))

                if PokerInterface.ordre_joueur == 0:
                    self.texte_combinaison1.grid_forget()
                    self.texte_combinaison1 = Label(self, text="Combinaison :\t {}".format(str(self.combinaison)), anchor=W)
                    self.texte_combinaison1.grid(row=2, column=11)

                if PokerInterface.ordre_joueur == 1:
                    self.texte_combinaison2.grid_forget()
                    self.texte_combinaison2 = Label(self, text="Combinaison :\t {}".format(str(self.combinaison)), anchor=W)
                    self.texte_combinaison2.grid(row=5, column=11)

                if PokerInterface.ordre_joueur == 2:
                    self.texte_combinaison3.grid_forget()
                    self.texte_combinaison3 = Label(self, text="Combinaison :\t {}".format(str(self.combinaison)), anchor=W)
                    self.texte_combinaison3.grid(row=8, column=11)

            if self.combinaison.nb_lancers == PokerInterface.limite_lancers:
                self.montrer_la_main()

    def montrer_la_main(self):
        self.main = self.combinaison.determiner_type_combinaison()
        PokerInterface.combinaisons_enregistrees.append(self.combinaison)
        ##############################################################################
        self.sans_ou_avec_as = self.combinaison.determiner_type_combinaison_sans_as()
        PokerInterface.combinaisons_enregistrees.append(self.combinaison)
        ###############################################################################
        self.relancer_quel_de.grid_forget()
        self.de_1.grid_forget()
        self.de_2.grid_forget()
        self.de_3.grid_forget()
        self.de_4.grid_forget()
        self.de_5.grid_forget()
        self.bouton_relancer.grid_forget()

        self.bouton_ok_prochain_joueur.grid(row=13, column=5)

        self.tapis = Canvas(self, height=300, width=500, bg="green")
        self.tapis.grid_forget()
        self.tapis.grid(row=1, column=0, rowspan=11, columnspan=11)
        self.tapis_texte = self.tapis.create_text(250, 50)
        self.tapis_combinaison = self.tapis.create_text(250, 200, anchor=CENTER)
        self.tapis.itemconfig(self.tapis_texte, text="Bravo, vous avez eu la main", font=("arial", 20))
        self.tapis.itemconfig(self.tapis_combinaison, text=str(self.main), font=("arial", 40))

        if PokerInterface.ordre_joueur == 0:
            self.texte_main1.grid_forget()
            self.texte_main1 = Label(self, text="Main :\t {}".format(str(self.main)), anchor = W)
            self.texte_main1.grid(row=3, column=11)

        elif PokerInterface.ordre_joueur == 1:
            self.texte_main2.grid_forget()
            self.texte_main2 = Label(self, text="Main :\t {}".format(str(self.main)), anchor = W)
            self.texte_main2.grid(row=6, column=11)

        elif PokerInterface.ordre_joueur == 2:
            self.texte_main3.grid_forget()
            self.texte_main3 = Label(self, text="Main :\t {}".format(str(self.main)), anchor = W)
            self.texte_main3.grid(row=9, column=11)

        PokerInterface.tuples_mains.append((self.nom_joueurs[self.ordre[PokerInterface.ordre_joueur]], self.main))

    def passer_joueur_suivant(self):
        PokerInterface.ordre_joueur += 1
        if PokerInterface.ordre_joueur < self.nombre_joueurs:
            self.joueur_courant.grid_forget()
            self.tapis.grid_forget()
            self.bouton_ok_prochain_joueur.grid_forget()

            self.mettre_a_jour_joueur_courant()

            self.tapis = Canvas(self, height=300, width=500, bg="green")
            self.bouton_lancer = Button(self, text="Lancer", padx=20, command=self.lancer_des)
            self.tapis.grid(row=1, column=0, rowspan=11, columnspan=11)
            self.bouton_lancer.grid(row=13, column=5)

            self.sauvegarder["state"] = "normal"

        else:
            meilleur_joueur, _ = self.combinaison.determiner_meilleur_combinaison(PokerInterface.tuples_mains)
            self.joueur_courant.grid_forget()
            self.tapis.grid_forget()

            self.tapis = Canvas(self, height=300, width=500, bg="green")
            self.tapis.grid(row=1, column=0, rowspan=11, columnspan=11)
            self.bouton_ok_prochain_joueur.grid_forget()

            self.question_rejouer.grid(row= 13, column=3, columnspan =3)
            self.bouton_rejouer.grid(row=14, column=3)
            self.quitter.grid(row=14, column=5)

            if meilleur_joueur is None:
                self.tapis_gagnant = self.tapis.create_text(250, 50)
                self.tapis.itemconfig(self.tapis_gagnant, text="La partie est nulle...", font=("arial", 20))
            else:
                self.tapis_gagnant = self.tapis.create_text(250, 50)
                self.tapis.itemconfig(self.tapis_gagnant, text="Bravo! Le gagnant est {}!\n"
                                                               "Merci de votre participation!".format(meilleur_joueur),
                                      font=("arial", 20))

            remove("Enregistrement.txt")

    def refaire_une_partie(self):
        PokerInterface.limite_lancers = 3
        PokerInterface.ordre_joueur = 0
        PokerInterface.tuples_mains = []
        PokerInterface.combinaisons_enregistrees = []

        self.tapis.grid_forget()
        self.question_rejouer.grid_forget()
        self.bouton_rejouer.grid_forget()
        self.quitter.grid_forget()
        self.cacher_menu_principal()
        self.sauvegarder.grid_forget()
        self.texte1.grid_forget()
        self.texte_combinaison1.grid_forget()
        self.texte_main1.grid_forget()
        self.texte2.grid_forget()
        self.texte_combinaison2.grid_forget()
        self.texte_main2.grid_forget()
        if self.nombre_joueurs == 3:
            self.texte3.grid_forget()
            self.texte_combinaison3.grid_forget()
            self.texte_main3.grid_forget()

        self.joueur_courant.grid(row=0, column=0, columnspan=11, sticky="N")
        self.tapis = Canvas(self, height=300, width=500, bg="green")
        self.tapis.grid(row=1, column=0, rowspan=11, columnspan=11)
        self.bouton_lancer.grid(row=13, column=5)
        self.sauvegarder.grid(row=1, column=13)
        self.sauvegarder["state"] = "normal"
        self.quitter.grid(row=2, column=13)

        self.relancer_partie = LancerPartie(self, self.nom_joueurs)
        self.ordre = self.relancer_partie.rendre_ordre()
        self.mettre_a_jour_joueur_courant()

        self.texte1 = Label(self, text=self.nom_joueurs[self.ordre[0]], padx=30, font=("arial", 15))
        self.texte1.grid(row=1, column=11, columnspan=2)
        self.texte_combinaison1 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
        self.texte_combinaison1.grid(row=2, column=11)
        self.texte_main1 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
        self.texte_main1.grid(row=3, column=11)

        self.texte2 = Label(self, text=self.nom_joueurs[self.ordre[1]], padx=30, font=("arial", 15))
        self.texte2.grid(row=4, column=11, columnspan=2)
        self.texte_combinaison2 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
        self.texte_combinaison2.grid(row=5, column=11)
        self.texte_main2 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
        self.texte_main2.grid(row=6, column=11)

        if self.nombre_joueurs == 3:
            self.texte3 = Label(self, text=self.nom_joueurs[self.ordre[2]], padx=30, font=("arial", 15))
            self.texte3.grid(row=7, column=11, columnspan=2)
            self.texte_combinaison3 = Label(self, text="Combinaison :\t {}".format(""), anchor=W)
            self.texte_combinaison3.grid(row=8, column=11)
            self.texte_main3 = Label(self, text="Main finale :\t {}".format(""), anchor=W)
            self.texte_main3.grid(row=9, column=11)


class OptionDePartie(Toplevel):
    def __init__(self, parent):
        super().__init__(parent)
        self.title("Options pour la partie")
        self.parent = parent
        self.transient(parent)
        self.grab_set()
        self.continuer = True
        self.protocol("WM_DELETE_WINDOW", self.retour)

        self.nombre_joueurs = 0
        self.nom_joueurs = []

        self.instruction_nb_joueurs = Label(self, text="Nombre de joueur")
        self.instruction_nb_joueurs.grid(row=0, column=0, padx=5, pady=5)

        self.joueurs = IntVar()
        joueurs_2 = Radiobutton(self, text="2 Joueurs", variable=self.joueurs, value=2)
        joueurs_2.grid(row=0, column=1, padx=10, pady=10)
        joueurs_3 = Radiobutton(self, text="3 Joueurs", variable=self.joueurs, value=3)
        joueurs_3.grid(row=0, column=2, padx=10, pady=10)
        self.joueurs.trace("w", self.selection_nb_joueurs)

        self.instruction_as_frime = Label(self, text="Est-ce que les as sont des frimes?")
        self.instruction_as_frime.grid(row=1, column=0, padx=5, pady=5)

        self.ace = IntVar()
        bouton_sans = Radiobutton(self, text="Sans (cartes frimées)", variable=self.ace, value=1)
        bouton_sans.grid(row=1, column=1, padx=10, pady=10)
        bouton_avec = Radiobutton(self, text="Avec (cartes frimées)", variable=self.ace, value=2)
        bouton_avec.grid(row=1, column=2, padx=10, pady=10)

        self.instruction_nom_joueurs = Label(self, text="Entrez le nom des joueurs :")
        self.list_labels_nom_joueurs = []
        self.list_entrees_nom_joueurs = []
        self.list_vars_nom_joueurs = []

        for i in range(3):
            self.list_vars_nom_joueurs.append(StringVar(value='Joueur {}'.format(i + 1)))
            self.list_labels_nom_joueurs.append(Label(self, text="Nom du joueur{}".format(i + 1)))
            self.list_entrees_nom_joueurs.append(Entry(self, width=10,
                                                       textvariable=self.list_vars_nom_joueurs[i]))

        self.erreur_nom_joueurs = Label(self, text="Erreur! Vous devez entrez un nom pour "
                                                   "chacun des joueurs avant de poursuivre.")

        self.bouton_commencer_partie = Button(self, text="Commencer", command=self.go)
        self.bouton_commencer_partie.grid(row=3, column=3, padx=10, pady=10)

        self.wait_window()

    def go(self):
        valide = False
        try:
            self.nombre_joueurs = self.joueurs.get()
            self.nom_joueurs = [self.list_vars_nom_joueurs[i].get() for i in range(self.nombre_joueurs)]
            if not (2 <= self.nombre_joueurs <= 3):
                messagebox.showerror("Erreur!", "Le nombre de joueurs est incorrect")
            else:
                valide = True
        except:
            messagebox.showerror("Erreur!", "Le nombre de joueurs est incorrect")

        if valide:
            self.grab_release()
            self.parent.focus_set()
            self.destroy()

    def selection_nb_joueurs(self, index, value, op):
        for i in range(3):
            self.list_labels_nom_joueurs[i].grid_forget()
            self.list_entrees_nom_joueurs[i].grid_forget()
        for i in range(self.joueurs.get()):
            self.list_labels_nom_joueurs[i].grid(row=2 + i, column=0, padx=5, pady=5)
            self.list_entrees_nom_joueurs[i].grid(row=2 + i, column=1, padx=5, pady=5)

    def sans_ou_avec_as(self):
        if self.ace.get() == 1:
            return Combinaison.determiner_type_combinaison_sans_as
        elif self.ace.get() == 2:
            return Combinaison.determiner_type_combinaison

    def reprendre_donnees(self):
        return self.nombre_joueurs, self.nom_joueurs

    def retour(self):
        self.continuer = False
        self.grab_release()
        self.parent.focus_set()
        self.destroy()
        return self.continuer


if __name__ == "__main__":
    fen = PokerInterface()
    fen.mainloop()