CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Probleme listbox

Pseudo supprimé
Pseudo supprimé 08 septembre 2015 à 14:55:39

Bonjour,

Voila mon soucis, j'ai une liste de personnages avec plusieurs stats et je voudrais que chacun de ces personnages apparaisse dans une listbox et soit representes par leur nom.

Voila mon code:

class Fighter:
def __init__(self, name, surname, anticipation, charisma, intelligence, agility,
natural_fitness, speed, stamina, strength, block, dodge, one_handed_weapons,
polearms, two_handed_weapons, age, weight, height, reputation):

self.name = name
self.surname = surname
self.anticipation = anticipation
self.charisma = charisma
self.intelligence = intelligence
self.agility = agility
self.natural_fitness = natural_fitness
self.speed = speed
self.stamina = stamina
self.strength = strength
self.block = block
self.dodge = dodge
self.one_handed_weapons = one_handed_weapons
self.polearms = polearms
self.two_handed_weapons = two_handed_weapons
self.age = age
self.weight = weight
self.height = height
self.reputation = reputation

listFighters = []

listName = ["Abel", "Abrahamsen", "Abramsson", "Adamsen", "Adolvsson", "Ahlberg", "Ahlgren",
"Ahlstrom", "Akerman", "Akselsen", "Albinsson", "Albrektson", "Alexandersen", "Almstedt", "Alvarson",
"Andersen", "Arud", "Baardsson", "Bager", "Begtsson", "Bentsen", "Berg", "Bergfalk", "Bergman",
"Bjork", "Bjorkman", "Blom", "Blomgren", "Borg", "Carlsen", "Christensen", "Clausen", "Dahl", "Dalgaard",
"Danielsson", "Einarsson", "Ek", "Eklund", "Engberg", "Engman", "Ericson", "Eriksen", "Falk", "Frisker",
"Frederiksen", "Goransson", "Grahn", "Gunnarsen", "Gustafsson", "Haakonsson", "Hagebak", "Hallman",
"Hansen", "Hansson", "Haugen", "Heimirsson", "Hermansson", "Hjort", "Holgersen", "Holmstrom", "Holst",
"Horn", "Hult", "Hummel", "Ingersson", "Jacobsen", "Jansson", "Jensen", "Johansen", "Johnsson", "Karlsen",
"Karlsson", "Kjeldsen", "Kjellsson", "Klasson", "Klausen", "Knudsen", "Kron", "Lang", "Langenberg",
"Larsen", "Larsson", "Leifsson", "Lindberg", "Lindgren", "Lindholm", "Lindstrom", "Ljung",
"Ljungborg", "Lofgren", "Ludvigsen", "Lund", "Lykke", "Magnusson", "Madsen", "Mardh", "Markusson",
"Martinsson", "Mathiasen", "Mattsson", "Mikaelsson", "Moller", "Mortensen", "Naess", "Ness", "Nass",
"Niklasson", "Nilsen", "Nilsson", "Nordskov", "Norling", "Nystrom", "Olander", "Olesen", "Olhouser",
"Oliversen", "Oliversson", "Olofsson", "Olson", "Olvirsson", "Oman", "Omdahl", "Ostberg", "Ottosen",
"Ovesen", "Ottosson", "Patriksson", "Pedersen", "Persson", "Petersen", "Petersson", "Pilkvist",
"Poulsen", "Ragnvaldsson", "Randrup", "Rask", "Raske", "Ramussen", "Riber", "Robertsen", "Robertsson",
"Rolvsson", "Rundstrom", "Rupertsson", "Salomon", "Sigurdsson", "Silje", "Simonsen", "Simonsson",
"Skovgaard", "Solberg", "Sorensen", "Sorenson", "Spillum", "Steensen", "Stefansson", "Steffensen",
"Steinsson", "Stenberg", "Stendahl", "Stenger", "Stegsson", "Storstrand", "Sunden", "Svenson", "Swenhaugen",
"Tennfjord", "Porirsson", "Thorn", "Thorsen", "Tjader", "Tomasson", "Toov", "Troelsen", "Ulfsson",
"Vang", "Victorsson", "Vinter", "Voll", "Vollan", "Waltersson", "Wang", "Westerberg", "Winter", "Wolff"]

listSurname = ["Abel", "Abrahamsen", "Abramsson", "Adamsen", "Adolvsson", "Ahlberg", "Ahlgren",
"Ahlstrom", "Akerman", "Akselsen", "Albinsson", "Albrektson", "Alexandersen", "Almstedt", "Alvarson",
"Andersen", "Arud", "Baardsson", "Bager", "Begtsson", "Bentsen", "Berg", "Bergfalk", "Bergman",
"Bjork", "Bjorkman", "Blom", "Blomgren", "Borg", "Carlsen", "Christensen", "Clausen", "Dahl", "Dalgaard",
"Danielsson", "Einarsson", "Ek", "Eklund", "Engberg", "Engman", "Ericson", "Eriksen", "Falk", "Frisker",
"Frederiksen", "Goransson", "Grahn", "Gunnarsen", "Gustafsson", "Haakonsson", "Hagebak", "Hallman",
"Hansen", "Hansson", "Haugen", "Heimirsson", "Hermansson", "Hjort", "Holgersen", "Holmstrom", "Holst",
"Horn", "Hult", "Hummel", "Ingersson", "Jacobsen", "Jansson", "Jensen", "Johansen", "Johnsson", "Karlsen",
"Karlsson", "Kjeldsen", "Kjellsson", "Klasson", "Klausen", "Knudsen", "Kron", "Lang", "Langenberg",
"Larsen", "Larsson", "Leifsson", "Lindberg", "Lindgren", "Lindholm", "Lindstrom", "Ljung",
"Ljungborg", "Lofgren", "Ludvigsen", "Lund", "Lykke", "Magnusson", "Madsen", "Mardh", "Markusson",
"Martinsson", "Mathiasen", "Mattsson", "Mikaelsson", "Moller", "Mortensen", "Naess", "Ness", "Nass",
"Niklasson", "Nilsen", "Nilsson", "Nordskov", "Norling", "Nystrom", "Olander", "Olesen", "Olhouser",
"Oliversen", "Oliversson", "Olofsson", "Olson", "Olvirsson", "Oman", "Omdahl", "Ostberg", "Ottosen",
"Ovesen", "Ottosson", "Patriksson", "Pedersen", "Persson", "Petersen", "Petersson", "Pilkvist",
"Poulsen", "Ragnvaldsson", "Randrup", "Rask", "Raske", "Ramussen", "Riber", "Robertsen", "Robertsson",
"Rolvsson", "Rundstrom", "Rupertsson", "Salomon", "Sigurdsson", "Silje", "Simonsen", "Simonsson",
"Skovgaard", "Solberg", "Sorensen", "Sorenson", "Spillum", "Steensen", "Stefansson", "Steffensen",
"Steinsson", "Stenberg", "Stendahl", "Stenger", "Stegsson", "Storstrand", "Sunden", "Svenson", "Swenhaugen",
"Tennfjord", "Porirsson", "Thorn", "Thorsen", "Tjader", "Tomasson", "Toov", "Troelsen", "Ulfsson",
"Vang", "Victorsson", "Vinter", "Voll", "Vollan", "Waltersson", "Wang", "Westerberg", "Winter", "Wolff"]

i = 0
for i in range(500):
fighter = Fighter(randrange(len(listName)), randrange(len(listSurname)), randrange(1,20), randrange(1,20), randrange(1,20), randrange(1,20),
randrange(1,20), randrange(1,20), randrange(1,20), randrange(1,20), randrange(1,20),
randrange(1,20), randrange(1,20), randrange(1,20), randrange(1,20), randrange(1,20),
randrange(1,20), randrange(1,20), randrange(1,20))

listFighters.append(Fighter)

i += 1

from tkinter import *

master = Tk()
listbox = Listbox(master, width=100, height=20)
listbox.pack()

for fighter.name in listFighters:
listbox.insert(END, fighter.name)

master.mainloop()

le probleme c'est qu'avec ce code tkinter affiche mes personnages comme ceci:

<class'__main__.Fighter'>

Au lieu de les afficher par leur nom (genre "Leiffson Vinter")

Romuald_78
Romuald_78
Niveau 5
08 septembre 2015 à 15:26:24

tu fais append de "Fighter" au lieu de "fighter"
donc au lieu d'avoir une liste d'instances de ta classe, tu as une liste de references vers ta classe elle meme.

Ensuite dans ta boucle, tu fais :
for fighter.name in listFighters: listbox.insert(END, fighter.name)

J'aurai utilisé un autre nom que le champ "name" de ta classe car tu fais la confusion entre le membre name et l'objet qui parcoure ta liste :
for myFighter in listFighters: listbox.insert(END, myFighter.name)

J'ai pas testé mais je pense que tu vas y arriver.

Message édité le 08 septembre 2015 à 15:27:40 par Romuald_78
Pseudo supprimé
Pseudo supprimé 08 septembre 2015 à 16:02:13

Merci,

Petite precision au cas ou quelqu'un qui se pose la meme question tombe sur mon topic voila le code qui fonctionne:

master = Tk()
listbox = Listbox(master, width=100, height=20)
listbox.pack()

for fighter in listFighters:
listbox.insert(END, listName[fighter.name])

master.mainloop()

fighter.name tout seul au lieu de listName[fighter.name], ne donne que l'indice dans la liste listName (du coup je me retrouve avec une liste de chiffres au lieu du nom)

Merci encore

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment