首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改树视图列表的ID

更改树视图列表的ID
EN

Stack Overflow用户
提问于 2015-11-20 21:33:51
回答 1查看 172关注 0票数 0

这就是我的问题所在,我试图将一个对象列表链接到一个treeview列表,这样当用户单击树中的某一行时,他就会获得有关该对象的所有信息。

下面是生成对象的代码:

代码语言:javascript
复制
class CHARACTER:
    def __init__(self, name, surname, age, sexe, pragmatism,
        courage, intelligence, shyness, happiness, fear, hunger,
        comfort, feeling, companion, father, mother, kids,
        brothers_sisters, friends, compatibility):
        self.name = name
        self.surname = surname
        self.age = age
        self.sexe = sexe
        self.pragmatism = pragmatism
        self.courage = courage
        self.intelligence = intelligence
        self.shyness = shyness
        self.happiness = happiness
        self.fear = fear
        self.hunger = hunger
        self.comfort = comfort
        self.feeling = feeling
        self.companion = companion
        self.father = father
        self.mother = mother
        self.kids = kids
        self.brothers_sisters = brothers_sisters
        self.friends = friends
        self.compatibility = compatibility

characters = []
sexe = ["Male", "Female"]
potential_husbands = []
potential_wives = []
potential_kids = []

mname = ["John", "Mike", "Albert", "Henry", "Patrick", "Francis",
"Robert", "Simon", "Charles", "Charlie", "Connor", "Adam", "Blake", 
"Steven", "Edward", "Andrew", "Joe", "Gregory", "Brian", "Anthony", 
"Frank", "Billy", "Boris", "Edgar", "Elliott", "Erik", "Liam", "Kyron", 
"Ned", "Neil", "Ricky", "Ross", "Rich", "Roy", "Preston", "William", 
"Vladimir", "Zach", "Wyatt", "Tylor", "Thomas", "Spike"]

fname = ["Alessia", "Ally", "Bridgette", "Callie", "Jessica", 
"Debora", "Diana", "Elizabeth", "Clair", "Fran", "Hannah", 
"Helene", "Marie", "Laura", "Leslie", "Leyla", "Kiley", 
"Margaret", "Lola", "Maryjane", "Megan", "Rose", "Sofia", 
"Samantha", "Teresa", "Yolanda", "Teri", "Vicky", "Tricia", 
"Rose", "Rita", "Nita", "Paola", "Penelope", "Polly", 
"Nathalie", "Melody", "Morgane"]

lname = ["Smith", "Johnson", "Williams", "Jones", "Brown", "Miller", 
"Moore", "Taylor", "Thomas", "White", "Harris", "Thompson", "Garcia", 
"Allen", "Lewis", "Hall", "Young", "Clark", "Hill", "Lopez", "Carter", 
"Turner", "Collins", "Evans", "Campbell", "Nelson", "Parker", "Green", 
"Black", "Green", "Lee", "Martin"]


"""
Generates 20 random characters with stats
"""

def characters_creation():
    for i in range(20):
        character = CHARACTER(random.choice(lname),
        random.choice(mname), random.randint(1,50), 
        random.choice(sexe), random.randint(1,20), random.randint(1,20),
        random.randint(1,20), random.randint(1,20),
        random.randint(1,20), random.randint(1,20),
        random.randint(1,20), random.randint(1,20), {}, [], [], [],
        [], [], [], {})

        characters.append(character)

和我的treeview的代码:

代码语言:javascript
复制
class CTABLE:
    def __init__(self, master):

        self.charactersTable = ttk.Treeview(master, selectmode="browse")
        self.charactersTable["show"] = "headings"
        self.charactersTable["columns"]=("Name", "Surname", "Hunger",
            "Fear", "Comfort", "Hapiness")
        self.charactersTable.column("Name", width=100, anchor=E)
        self.charactersTable.heading("Name", text="Name")
        self.charactersTable.column("Surname", width=100, anchor=E)
        self.charactersTable.heading("Surname", text="Surname")
        self.charactersTable.column("Hunger", width=100, anchor=E)
        self.charactersTable.heading("Hunger", text="Hunger")
        self.charactersTable.column("Fear", width=100, anchor=E)
        self.charactersTable.heading("Fear", text="Fear")
        self.charactersTable.column("Comfort", width=100, anchor=E)
        self.charactersTable.heading("Comfort", text="Comfort")
        self.charactersTable.column("Hapiness", width=100, anchor=E)
        self.charactersTable.heading("Hapiness", text="Hapiness")

        for character in characters:
            self.charactersTable.insert("", "end", values=(character.surname, character.name, 
            character.hunger, character.fear, character.comfort,
            character.happiness))
        self.charactersTable.bind("<Double-1>", self.CTClick)
        self.charactersTable.grid(row=1, rowspan=3, column=1)

    def CTClick(self, event):

        item = self.charactersTable.selection()[0]
        item = int(item[1:])
        print characters[item-1].surname
        print characters[item-1].name

因此,代码获取每行的id,并将其与“字符列表”中的字符相关联。

现在我的问题是,由于某种原因,一旦我到达第10行,程序就开始用字母命名其他行,而不是继续。

因此ids列表如下所示:

你可以在控制台的后面看到,如果我一个接一个地点击每一行,会发生什么。,Python treeview list。Python在9之后的几行中切换为字母,然后返回到正常计数...

我该如何解决这个问题呢?有没有办法手动分配一个新的id?

EN

回答 1

Stack Overflow用户

发布于 2015-11-20 21:40:27

好吧,我找到了答案:

代码语言:javascript
复制
item = self.charactersTable.selection()[0]
item = int(item[1:], 16)
print characters[item-1].surname
print characters[item-1].name

将十六进制值转换为十进制值(如果遇到同样问题的任何人)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33828022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档