не может установить позицию wx.frame в openbox

Я играю с wxPython и пытаюсь установить положение кадра:

import wx

app = wx.App()
p = wx.Point(200,  200)
frame = wx.Frame(None, title = 'test position', pos = p)
frame.Show(True)
print('frame position: ', frame.GetPosition())

app.MainLoop()

даже если print('frame position: ', frame.GetPosition())показывает правильное положение, рамка отображается в верхнем левом углу экрана. В качестве альтернативы я попробовал

frame.SetPosition(p)
frame.Move(p)

безуспешно.

моя среда: ArchLinux 5.3.13, python 3.8.0, wxpython 4.0.7, openbox 3.6.1

На cinnamom код работает как положено. Как решить эту проблему на openbox?

изменить 07,12,2019: я мог установить позицию диалога в конфигурации openbox ~/.config/openbox/rc.xml:

<application name="fahrplan.py"
            class="Fahrplan.py"
        groupname="fahrplan.py"
       groupclass="Fahrplan.py"
            title="Fahrplan *" 
             type="dialog"> 
  <position force="no"> 
    <x>760</x> 
    <y>415</y>
  </position>               
</application>

я получил имя, класс и т. д. от obxprop. x и y рассчитываются для центрирования диалогового окна размером 400 x 250 пикселей на экране размером 1920 x 1080 пикселей.

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

2 ответа

У меня была такая же проблема под Windows, и я играл с флагами стиля. При активной системе wxICONIZE окно, наконец, использовало информацию о местоположении.

Позиция предоставляется оконному менеджеру как "подсказка". Это полностью зависит от оконного менеджера, учтет ли он подсказку или нет. Проверьте настройки или предпочтения openbox и посмотрите, есть ли что-нибудь, что можно изменить.

Другие вопросы по тегам