показать всплывающее окно поверх открытого окна в PySimpleGUI

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

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')

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


person 2017kamb    schedule 19.09.2019    source источник


Ответы (1)


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

        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)
person Mike from PSG    schedule 19.09.2019