获取 PySimpleGUI 列表框以列出 object 属性
Getting PySimpleGUI Listbox to list object attributes
我想了解如何在 PySimpleGUI 应用程序中使用 python 中的 objects。我有一个旅行列表 objects,每个都有三个属性 - trip_no、日期、driver.
class Trip:
def __init__(self,trip_no,date,driver):
self.trip_no=trip_no
self.date=date
self.driver=driver
我创建了一个行程列表 objects:
trips=[Trip('1','11/22/12','Dave'),Trip('2','10/13/14','Joe'),Trip('3','12/14/16','Dave')]
我可以搜索和检索给定行程的属性,但在列表框中我只能获得对 object 的引用,如 <main.Trip object 在 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']]
但是有没有办法直接显示属性呢?
感谢您的帮助。
定义函数 __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()
我想了解如何在 PySimpleGUI 应用程序中使用 python 中的 objects。我有一个旅行列表 objects,每个都有三个属性 - trip_no、日期、driver.
class Trip:
def __init__(self,trip_no,date,driver):
self.trip_no=trip_no
self.date=date
self.driver=driver
我创建了一个行程列表 objects:
trips=[Trip('1','11/22/12','Dave'),Trip('2','10/13/14','Joe'),Trip('3','12/14/16','Dave')]
我可以搜索和检索给定行程的属性,但在列表框中我只能获得对 object 的引用,如 <main.Trip object 在 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']]
但是有没有办法直接显示属性呢?
感谢您的帮助。
定义函数 __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()