如何解决如何在 Pysimplegui 中使用单个滚动条控制四个列表框
我有一些股票控制 python 代码,其中有 4 个列表框,但我需要将所有列表框与单个滚动条同步。
我需要专门使用列表框——我不能使用其他东西。
如果有人可以提供帮助,请按照以下代码操作:
def Filtrar():
#mudar tema
sg.change_look_and_feel('DarkGreen')
Nome = ''
Quantidade = ''
Preco = ''
Id = ''
#layout
layout = [
[sg.Text('Selecione a classe que deseja ver:',size=(15,0)),sg.InputCombo(('Circuito','Transistor'),size=(20,0),key='combo')],[sg.Button('Consultar')],[sg.Text('ID'),sg.Text(' '),sg.Text('Produto'),sg.Text(' '),sg.Text('Quantidade'),sg.Text(' '),sg.Text('Preço')],[sg.ListBox(Id,size=(5,10),key='-Box0-'),sg.ListBox(Nome,size=(25,key='-Box-'),sg.ListBox(Quantidade,size=(10,key='-Box2-'),sg.ListBox(Preco,key='-Box3-')],[sg.Button('Deletar')],[sg.Button('Sair'),sg.Button('Voltar')]
]
#janela
window = sg.Window("adicionar ao Estoque",layout)
while True:
event,values = window.read()
if event == 'Consultar':
f = values['combo']
Id = filtrar2(f)
Nome = filtrar(f)
Quantidade = filtrar3(f)
Preco = filtrar4(f)
window.find_element('-Box-').Update(Nome)
window.find_element('-Box0-').Update(Id)
window.find_element('-Box2-').Update(Quantidade)
window.find_element('-Box3-').Update(Preco)
if event == sg.WIN_CLOSED or event == 'Sair':
window.close()
break
if event == 'Voltar':
window.close()
initi()
```
解决方法
为了更好的外观,添加了一些 tkinter 代码,
import PySimpleGUI as sg
sg.theme('DarkBlue')
sg.set_options(font=('Courier New',12))
cols = 3
rows = 50
rows_show = 10
col_width = 15
data = [[f'Cell ({j:0>2d},{i:0>2d})' for i in range(rows)] for j in range(cols)]
all_listbox = [[sg.Listbox(data[i],size=(15,rows),pad=(0,0),no_scrollbar=True,enable_events=True,key=f'listbox {i}',select_mode=sg.LISTBOX_SELECT_MODE_SINGLE) for i in range(cols)]]
layout = [
[sg.Text('Product'.center(col_width),0)),sg.Text('Unit Price'.center(col_width),sg.Text('Price'.center(col_width),0))],[sg.Column(all_listbox,size=(555,600),scrollable=True,vertical_scroll_only=True)],]
window = sg.Window("Title",layout,finalize=True)
for i in range(cols):
listbox = window[f'listbox {i}'].Widget
listbox.configure(justify='center')
while True:
event,values = window.read()
if event == sg.WINDOW_CLOSED:
break
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)
window.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。