【问题标题】:Getting PySimpleGUI Listbox to list object attributes让 PySimpleGUI 列表框列出对象属性
【发布时间】:2021-08-27 14:59:17
【问题描述】:

我正在尝试了解如何在 python 中使用 PySimpleGUI 应用程序中的对象。我有一个旅行对象列表,每个对象都有三个属性——trip_no、日期、司机。

class Trip:
def __init__(self,trip_no,date,driver):
    self.trip_no=trip_no
    self.date=date
    self.driver=driver

我创建了一个旅行对象列表:

trips=[Trip('1','11/22/12','Dave'),Trip('2','10/13/14','Joe'),Trip('3','12/14/16','Dave')]

我可以搜索和检索给定行程的属性,但在列表框中我只能获得对对象的引用,如 ma​​in.Trip 对象位于 0x10b2bacc0>。我不知道如何在列表框中列出属性(trip.trip_no、trip.date、trip.driver)。

shot of form

我发现的示例适用于包含三个列表的列表,每个列表包含三个字符串元素:

[['1','11/22/12','Dave'],['2','10/13/14','Joe'],['3','12/14/16','Dave']]

但是有没有办法直接显示属性?

感谢您的帮助。

【问题讨论】:

    标签: pysimplegui


    【解决方案1】:

    定义函数__repr__ 以显示对象的表示形式。

    import PySimpleGUI as sg
    
    class Trip:
    
        def __init__(self,trip_no,date,driver):
            self.trip_no=trip_no
            self.date=date
            self.driver=driver
    
        def __repr__(self):
            return f"trip_no:{self.trip_no}, date:{self.date}, driver:{self.driver}"
    
    trips=[Trip('1','11/22/12','Dave'),Trip('2','10/13/14','Joe'),Trip('3','12/14/16','Dave')]
    
    sg.theme("DarkBlue3")
    sg.set_options(font=("Courier New", 12))
    
    layout = [[sg.Listbox(trips, size=(40, 3))]]
    window = sg.Window('Title', layout, finalize=True)
    
    while True:
    
        event, values = window.read()
        if event == sg.WINDOW_CLOSED:
            break
        print(event, values)
    
    window.close()
    

    【讨论】:

    • 谢谢,效果很好!我有很多东西要学...我在我做的一个教程中看到了 repr,但我没有看到如何应用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多