你好,我需要很多帮助,我有这个代码,显示一些列表框,信息,如:Id,产品,数量和价格。但是,我希望根据库存产品的数量,一列显示一个滚动条,滚动条的行数与产品数量相同
Nome = ''
Quantidade = ''
Preco = ''
Id = ''
cols = 4
rows = 20
col_width = 22
all_listbox = [[sg.Listbox(Nome,size=(15, rows), pad=(0, 0),
no_scrollbar=True, enable_events=False, key=f'listbox {i}',
select_mode=sg.LISTBOX_SELECT_MODE_SINGLE) for i in range(cols)]]
#layout
layout = [
[sg.Text('Selecione a classe que deseja ver:',size=
(15,0)),sg.InputCombo(('Circuito','Transistor','Membrana'),size=(20,0),key='combo')],
[sg.Button('Consultar')],
[sg.Text('Id'.center(col_width), pad=(0, 0)),
sg.Text('Nome'.center(col_width), pad=(0, 0)),
sg.Text('Quantidade'.center(col_width), pad=(0, 0)),
sg.Text('Preço'.center(col_width), pad=(0, 0))],
[sg.Column(all_listbox, size=(440, 200), pad=(0, 0),scrollable=True,
vertical_scroll_only=True,key='test')],
[sg.Button('Deletar')],
[sg.Button('Sair'),sg.Button('Voltar')]
]
#janela
window = sg.Window("adicionar ao Estoque",layout)
while True:
event,values = window.read()
try:
if event.startswith('listbox'):
row = window[event].get_indexes()[0]
user_event = False
for i in range(cols):
window[f'listbox {i}'].set_value([])
window[f'listbox {i}'].Widget.selection_set(row)
if event == 'Consultar':
f = values['combo']
Id = filtrar2(f)
Nome = filtrar(f)
Quantidade = filtrar3(f)
Preco = filtrar4(f)
window.find_element(f'listbox {1}').Update(Nome)
window.find_element(f'listbox {0}').Update(Id)
window.find_element(f'listbox {2}').Update(Quantidade)
window.find_element(f'listbox {3}').Update(Preco)
下面是滚动条的图像,其中的行数大于产品数:
更改列表框的内容后,选项
size
没有更改。更改size
后,调用元素sg.Column
的方法contents_changed
,然后计算新的滚动区域以匹配新内容另一个关于错误滚动区域的问题可以通过新的
scroll
函数解决,PySimpleGUI将来可能会更新源代码不完整,不可执行,所以旧的例子为您
相关问题 更多 >
编程相关推荐