Ошибка типа: jeu () принимает ровно 1 аргумент (задано 0) - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь создать небольшую игру и застрял с ошибкой.

"TypeError: jeu () принимает ровно 1 аргумент (задано 0)"

Я даже не знаю, правильный ли код.Я начинающий с python и tkinter

def jeu(arg):
  root2 = Tk()
  root2.title("Binary Game")
  root2.geometry("500x350+50+50")
  root2.resizable(width=False, height=False)
  root2['bg'] = 'black'
  #####
  menu = Menu(root2)
  root2.config(menu=menu)
  subFichier=Menu(menu)
  menu.add_cascade(label="Fichier", menu=subFichier)
  subFichier.add_command(label="Nouvelle partie")
  subFichier.add_separator()
  subFichier.add_command(label="Quitter", command=root2.quit)
  #####
  difchoisie = Label(root2, pady=30, text="Donnez la valeur décimale 
  de ce nombre : ", font=("Courier New", 18), bg="black", 
  fg="green").pack()
  nbdisp = Label(root2, text=nb, font=("Courier New", 20), 
  bg="black", 
  fg="green").pack()
  entrynbdec = Entry(root2, width=5, font=("Courier New", 20), 
  justify=CENTER).pack(side=TOP, pady=30)
  boutonvalid = Button(root2, text="Valider", 
  highlightbackground="black").pack()
  root2.mainloop()

root = Tk()
root.title("Binary Game")
root.geometry("500x350+50+50")
root.resizable(width=False, height=False)
root['bg'] = 'black'
#####
menu = Menu(root)
root.config(menu=menu)
subFichier=Menu(menu)
menu.add_cascade(label="Fichier", menu=subFichier)
subFichier.add_command(label="Nouvelle partie")
subFichier.add_separator()
subFichier.add_command(label="Quitter", command=root.quit)
#####
bienvenue = Label(root, pady=30, text="Bienvenue sur Binary Game !", 
font =("Courier New", 24), bg="black", fg="green").pack()
choixdif = Label(root, pady=25, text="Veuillez choisir la . 
difficulté.", font =("Courier New", 18), bg="black", 
fg="green").pack()
boutondif1 = Button(root, text="Facile", highlightbackground 
="black", command=jeu).pack()
boutondif2 = Button(root, text="Moyenne", highlightbackground 
="black", command=root.destroy and jeu).pack()
root.mainloop()

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Чтобы развернуть ответ Базингаа, функция jue() не должна иметь никаких аргументов, поскольку функции, связанные с кнопками tkinter, не передают события (в отличие от привязок клавиатуры).

Однако,если вы хотите передать значения в jue, вам нужно будет использовать что-то вроде библиотеки functools, которая имеет функцию partial.

Например:

import functools

def jue(arg):
    #code here

#rest of code

boutondif1 = Button(root, text="Facile", highlightbackground 
="black", command=functools.partial(jeu, some_args)).pack() #replace some_args with the value(s) you would pass to the function

boutondif2 = Button(root, text="Moyenne", highlightbackground 
="black", command=functools.partial(jeu, some_args)).pack()

Обратите внимание, что если вы хотите использовать root.destroy() при нажатии boutondif2, вам нужно будет включить root.destroy() в jue().Вы можете сделать это, добавив в свою функцию параметр, который, если он установлен на True, вызывает root.destroy(), например:

def jue(arg, do_destroy):
    if do_destroy:
        root.destroy()

    #rest of code here
0 голосов
/ 31 декабря 2018

Согласно определению вашей функции, jeu() в настоящее время предполагается принять один аргумент arg

def jeu(arg):

Однако во всех ваших определениях функций вы нигде не используете ни переданные аргументы, нивы передаете ему любые аргументы, поэтому вы получаете самоочевидную ошибку

TypeError: jeu () принимает ровно 1 аргумент (задано 0)

где это «ровно 1 аргумент» относится к arg, определенному в определении функции def jeu(arg):

Следовательно, просто используйте определение функции без каких-либо аргументов в качестве

def jeu():
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...