Я нашел это трудным путем. Я углубился в исходный код wx.lib.agw.aui.framemanager
и попытался выяснить, почему подсказки при стыковке не работают должным образом. Я проверял каждый шаг, пока в самом конце вычисления места для рисования подсказки не было метода ClientToScreen(self,x,y)
, который должен возвращать x,y
со смещением self: wx.Window
, но каждый раз возвращает x,y
с тем же смещением , Затем я попытался указать начальную позицию в конструкторе основного кадра, что никак не повлияло на положение кадра. Затем я проверил вывод из GetScreenPosition
при обработке EVT_MOVE
, и оказалось, что EVT_MOVE
даже не излучается на Wayland, за исключением случаев, когда вы используете Move
или увеличиваете / уменьшаете кадр (возможно, в некоторых других случаях, но Я нашел только упомянутые случаи).
Внутри EVT_MOVE
обработчик GetScreenPosition
возвращает:
- (0,0) при развертывании окна,
- координаты, указанные в
Move
при срабатывании (но само Move
не работает) (26, 23)
в других случаях (включая вызов в других местах)
Является ли это известным ошибка? Может быть, я единственный, кто испытывает это. Если нет, я добавлю проблему в wxWidgets / Phoenix.
edit: python 3.6.9, wx Python 4.0.7, Ubuntu 18.04.1, Gnome 3.28. 4