如何使RadioButton工作

时间:2017-04-04 22:17:46

标签: python tkinter

我试图让我的RadioButton工作并返回一些东西。好吧要更清楚一点,我希望它能像这样。用户选择2 Joueur或3 Joueur,然后选择Sans或Avec然后按下Jouer按钮并将程序快速移动到下一个窗口,但无法弄清楚如何。这里的代码我正在使用。

我的程序是使用tkinter作为界面的PokerDice游戏。我是法国人,所以这个变量都是法语的。

感谢您的提前帮助

class PokerDice(Tk):
def __init__(self):
    Tk.__init__(self)

    programme = Frame()
    programme.pack(side="top", fill="both", expand=True)
    programme.grid_rowconfigure(0, weight=5)
    programme.grid_columnconfigure(0, weight=5)

    self.pages = {}
    for unePage in (DebuterProgramme, PageInstructions, PartiesDePoker, LancerParties):
        page_de_demarrage = unePage(programme, self)
        self.pages[unePage] = page_de_demarrage
        page_de_demarrage.grid(row=0, column=0, sticky="nsew")
    self.voir_pages(DebuterProgramme)

def voir_pages(self, cont):
    voir_page_de_demarrage = self.pages[cont]
    voir_page_de_demarrage.tkraise()


class DebuterProgramme(Frame):
def __init__(self, parent, controller):
    Frame.__init__(self, parent)
    label = Label(self, text="Poker D'As", font=LARGE_FONT)
    label.pack(pady=10, padx=10)

    button_instructions = Button(self, text="Instructions",
                                 command=lambda: controller.voir_pages(PageInstructions))
    button_instructions.pack()

    button_jouer = Button(self, text="Jouer",
                          command=lambda: controller.voir_pages(PartiesDePoker))
    button_jouer.pack()

    button_jouer = Button(self, text="Quitter", command=quit)
    button_jouer.pack()


class PageInstructions(Frame):
def __init__(self, parent, controller):
    Frame.__init__(self, parent)
    label = Label(self, text="Instructions", font=LARGE_FONT)
    label.pack(side="top", fill="both", expand=True, pady=10, padx=10)
    var = StringVar()
    text = Message(self, textvariable=var, font=NORMAL_FONT)
    var.set("\n1. Vous devez choisir le nombres de joueurs pour la partie."
            "\n\n2. Vous devez choisir si les AS sont des jokers ( dés frimés )."
            "\n\n3. Losque la partie seras debute vous devez inscrire les noms "
            "des joueurs dans les cases respectives."
            "\n\n4. Le premier joueur lanceras les dés un maximum de 3 fois,"
            " le deuxième joueurs auras le même nombres de lancers que le joueur 1."
            " Il est avantangeux d'être le premier a jouer."
            "\n\n5. "
            "\n\n6. Vous devez inscrire les changements de dés de cette façon. "
            "exemple : 1,2,3 ou appuyer sur la touche [ENTER] pour relancer aucun dés"
            "\n\n7. Le but du jeu de Poker D'AS est d'avoir les meilleurs combinaisons de dés possibles."
            "\n\n8. Voici une liste des meilleurs combinaisons de dés possible en ordre"
            "décroissant."
            "\n\nQuinton (5 dés même valeur)"
            "\n\nCarre (4 dés de même valeur)"
            "\n\nFull (3 dés de même valeur et une paire)"
            "\n\nBrelan (3 dés de même valeur)"
            "\n\nSequence (soit du dés 9 a ROI ou 10 a AS )"
            "\n\nDeux paires (2 dés de même valeur + 2 dés de même valeur)"
            "\n\nUne Paire (2 dés de même valeur)"
            "\n\n")
    text.pack()

    button_retour = Button(self, text="Retour", command=lambda: controller.voir_pages(DebuterProgramme))
    button_retour.pack()


class PartiesDePoker(Frame):
def __init__(self, parent, controller):
    Frame.__init__(self, parent)
    label = Label(self, text="Vous voulez combien de joueurs ? ", font=LARGE_FONT)
    label.grid(row=0, column=0, padx=10, pady=10)

    button_joueur2 = Radiobutton(self, text="2 Joueurs", command=lambda: controller.voir_pages(LancerParties))
    button_joueur2.grid(row=0, column=1, padx=10, pady=10)

    button_joueur3 = Radiobutton(self, text="3 Joueurs")
    button_joueur3.grid(row=0, column=2, padx=10, pady=10)

    label = Label(self, text="Voulez-vous jouer sans frimes ou avec frimes ?", font=LARGE_FONT)
    label.grid(row=1, column=0, padx=10, pady=10)

    button_oui = Radiobutton(self, text="Sans")
    button_oui.grid(row=1, column=1, padx=10, pady=10)
    button_non = Radiobutton(self, text="Avec")
    button_non.grid(row=1, column=2, padx=10, pady=10)

    button_retour = Button(self, text="Retour", command=lambda: controller.voir_pages(DebuterProgramme))
    button_retour.grid(row=2, column=2, padx=10, pady=10)

    button_jouer = Button(self, text="Jouer", command=lambda: controller.voir_pages(LancerParties))
    button_jouer.grid(row=2, column=1, padx=10, pady=10)


class LancerParties(Frame):
def __init__(self, parent, controller):
    Frame.__init__(self, parent)

    label_joueur_1 = Label(self, text="Joueur # 1")
    label_joueur_1.grid(row=0, column=0, padx=10, pady=10)
    nom_joueur_1 = Entry(self)
    nom_joueur_1.grid(row=0, column=1)

    label_joueur_2 = Label(self, text="Joueur # 2")
    label_joueur_2.grid(row=1, column=0, padx=10, pady=10)
    nom_joueur_2 = Entry(self)
    nom_joueur_2.grid(row=1, column=1)

    label_joueur_3 = Label(self, text="Joueur # 3")
    label_joueur_3.grid(row=2, column=0, padx=10, pady=10)
    nom_joueur_3 = Entry(self)
    nom_joueur_3.grid(row=2, column=1)

    button_lancer_partie = Button(self, text="Lancer la partie",
                                  command=lambda: controller.voir_pages(DebutDeLaPartie))
    button_lancer_partie.grid(row=3, column=1, padx=10, pady=10)


class DebutDeLaPartie(Frame):
def __init__(self, parent):
    Frame.__init__(self, parent)
pass
pokerAs = PokerDice() pokerAs.mainloop()

1 个答案:

答案 0 :(得分:1)

我看到一个问题。您的var pageWidth = document.getElementsByTagName("BODY")[0].clientWidth var pageHeight = document.getElementsByTagName("BODY")[0].clientHeight view.size.width = pageWidth * myWidthScale view.size.height = pageHeight * myHeightScale center = new Point(width / 2, pageHeight / 2) view.center = center 未连接,您无法阅读其状态。创建一个Radiobutton并将其用于该组中的所有Variable

来自TutorialsPoint的代码:

Radiobutton

因此var = IntVar() R1 = Radiobutton(root, text="Option 1", variable=var, value=1, command=sel) R1.pack( anchor = W ) R2 = Radiobutton(root, text="Option 2", variable=var, value=2, command=sel) R2.pack( anchor = W ) R3 = Radiobutton(root, text="Option 3", variable=var, value=3, command=sel) R3.pack( anchor = W) 表示按钮组的状态。每个按钮都有不同的值,以便您可以判断选择了哪个。

请注意,每个群组都需要它自己的var。并确保通过将变量分配给实例变量(即IntVar)来保留对变量的引用

如果要查看状态,请使用self.var