使用python 3在tkinter中使用单选按钮有困难
我试图理解我的代码中的错误,但是我变瞎了,哈哈!我的self.ace单选按钮需要返回另一个已在PokerInterface中编写的模块。如果我选择SANS,游戏将在没有通配符的情况下进行,如果用户选择AVEC,则AS将变为通配符。提前谢谢 马特使用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窗口”,自
类接口(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()