0

我正在玩 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

在肉桂上,代码按预期工作。如何在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 被计算为在 1920 x 1080 像素的屏幕上居中显示 400 x 250 像素的对话框。

这种静态解决方案不适合我。我想放置动态生成的弹出窗口。

4

2 回答 2

1

我在 Windows 下遇到了同样的问题,并使用了样式标志。随着 wxICONIZE sytle set active 窗口最终使用了定位信息

于 2021-02-28T13:29:31.010 回答
0

该位置作为“提示”提供给窗口管理器。是否真正尊重提示完全取决于窗口管理器。检查 openbox 设置或首选项,看看是否有可以更改的相关内容。

于 2019-12-06T17:39:05.437 回答