Я пробовал это раньше, но получаю сообщение об ошибке, думаю, потому что я использую фреймы (я думаю).
/>Как видите, я пробовал использовать window.visibility_changed(), но это не помогло.
Тестовый код для объяснения:
Код: Выделить всё
import PySimpleGUI as sg
def frame (n_frame):
layout = [[sg.Text ('test')]]
return layout
def make_window():
layout = [[sg.Column([[sg.Text ('Title')], # First title of the IDS
[sg.Column(frame(1),key = '-LVL 1 CALL-')],
[sg.pin (sg.Frame(title = '',
layout = [[sg.Button(' + ',key = '-ADD A LVL 1 FRAME-'),
sg.Button(' - ',key = '-REMOVE A LVL 1 FRAME-'),
sg.Button('Save')]],
relief = 'flat'))]],
scrollable=True,
vertical_scroll_only=True,
pad =(0,0))]]
window = sg.Window('Window Title', layout, metadata=1, resizable = True, element_padding = (10, 6), finalize = True)
return window
def main():
window = make_window()
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event =='Save':
break
elif event == '-ADD A LVL 1 FRAME-' :
window.metadata += 1
window.extend_layout(window['-LVL 1 CALL-'],(frame(window.metadata)))
window.refresh()
window.visibility_changed()
window['-LVL 1 CALL-'].contents_changed()
window.close()
if __name__ == '__main__':
main()
Код: Выделить всё
File "C:\...\Lib\site-packages\PySimpleGUI\PySimpleGUI.py", line 8302, in contents_changed
self.TKColFrame.canvas.config(scrollregion=self.TKColFrame.canvas.bbox('all'))
^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Frame' object has no attribute 'canvas'
- Я хотел бы обновить его размер без необходимости вызывать .contents_changed() в конкретное окно, которое только что было добавлено, потому что у меня их очень много.
- Я бы хотел, чтобы полоса прокрутки адаптировалась к размеру окна, если пользователь изменяет размер окна.
Это менее важно, и я также могу найти их самостоятельно, спасибо за помощь
Подробнее здесь: https://stackoverflow.com/questions/782 ... ysimplegui