anonymous
anonymous

Reputation: 9

table rows not showing properly, only one row is displayed after running

i have written the right code in python simple gui, but after running the code, only one row is displayed and the whole table is not shown i dont know why.this is what is displayed after running the code.

import PySimpleGUI as sg


rows=[
      ["CULTUS","4","3500","300","550"],
      ["SONATA","3","5000","350","750"],
      ["KIA Sportage","3","6000","500","700"],
      ["Yaris","5","4000","300","600"],
      ["HONDA CIVIC","5","5500","300","600"],
      ["Pajero","2","7000","500","700"]
     ]
header =[
     ["Model", "Available", "Price/Day","Liability Insurance/Day", "Comprehensive Insurance/Day"]
     ]
layout=[[sg.Table(
               values=rows,
               headings=header,
               size=(500,300),
               key="-TABLE-",)
     ],
     [sg.OK(),sg.Cancel()]
     ]
window = sg.Window('TG Enterprises', layout ,size=(600,400))
event, values = window.read()
if event == 'Cancel':
    window.close()
print(event,values)

   

this is my code ,can anyone please help me what is wrong with this code and what can i do to make it right?

Upvotes: 0

Views: 242

Answers (1)

darren
darren

Reputation: 5694

I cut out some of the text to make it easier to comprehend, but basically it turns out that your attempt was very close.

The main error was the header was a list containing a list. whereas it should just have been a list.

so using boilerplate i made a working example for you like this:

import PySimpleGUI as sg


rows=[
      ["CULTUS","4","3500","300","550"],
      ["SONATA","3","5000","350","750"],
      ["KIA Sportage","3","6000","500","700"],
      ["Yaris","5","4000","300","600"],
      ["HONDA CIVIC","5","5500","300","600"],
      ["Pajero","2","7000","500","700"]
     ]

header =["Model", "Available", "Price","Liability", "Comprehensive"]

layout = [[sg.Text(x) for x in header],
          [sg.Table(values=rows,
                    headings=header,
                    max_col_width=25,
                    auto_size_columns=True,
                    justification='right',
                    alternating_row_color='lightblue',
                    key='table')],
          [sg.Button('Add'), sg.Button('Delete')]]

window = sg.Window('Table example').Layout(layout)

while True:
    event, values = window.Read()
    if event is None:
        break
    print(event, values)

window.Close()

and the result looks like this:

enter image description here

note: I didnt try out the buttons or any other logic. I just provided an example of the correct formatting example.

Upvotes: 0

Related Questions