показать всплывающее окно поверх открытого окна в PySimpleGUI - PullRequest
2 голосов
/ 19 сентября 2019

Мое всплывающее окно открывается за текущим открытым окном, поэтому оно не отображается.Как показать всплывающее окно поверх текущего открытого окна?Ниже приведен пример кода:

import PySimpleGUI as sg
# set global options for window
background = '#F0F0F0'
sg.SetOptions(background_color=background, 
    element_background_color=background, 
    text_element_background_color=background,
    window_location=(0, 0), 
    margins=(0,0), 
    text_color = 'Black',
    input_text_color ='Black',
    button_color = ('Black', 'gainsboro'))

layout = [[sg.Button('Ok'), sg.Button('Cancel')]]

window = sg.Window('Test Window', grab_anywhere=False, size=(800, 480), return_keyboard_events=True, keep_on_top=True).Layout(layout).Finalize()

window.Maximize();
while True:             
    event, values = window.read()
    if event in (None, 'Cancel'):
        break
    else:
        sg.Popup('Ok clicked')

Я пробовал Popup с keep_on_top = True, но он не работает, окно получает приоритет для показа сверху, поэтому Popup остается скрытым за окном.Есть ли способ показать всплывающее окно над окном?

1 Ответ

2 голосов
/ 19 сентября 2019

Установка держать сверху в вызове всплывающего окна создала окно сверху для меня.

        sg.Popup('Ok clicked', keep_on_top=True)

Однако, если вы нажмете на окно позади, потому что оно также имеет удержание сверху, оно покроетваше всплывающее окно.

Поскольку ваше главное окно развернуто, возможно, вам не нужно держать его на верхнем уровне.Это позволит вам установить его только во всплывающем окне, чтобы оно оставалось поверх главного окна.

import PySimpleGUI as sg
# set global options for window
background = '#F0F0F0'
sg.SetOptions(background_color=background,
    element_background_color=background,
    text_element_background_color=background,
    window_location=(0, 0),
    margins=(0,0),
    text_color = 'Black',
    input_text_color ='Black',
    button_color = ('Black', 'gainsboro'))

layout = [[sg.Button('Ok'), sg.Button('Cancel')]]

window = sg.Window('Test Window', layout, grab_anywhere=False, size=(800, 480), return_keyboard_events=True, finalize=True)

window.Maximize()
window.BringToFront()
while True:
    event, values = window.read()
    if event in (None, 'Cancel'):
        break
    else:
        sg.Popup('Ok clicked', keep_on_top=True)
...