让弹出窗口 window 以父级为中心 - Glade、GTK、Python

Have a popup window stay centered on parent - Glade, GTK, Python

任何人都可以告诉我如何让首选项弹出窗口保持在父 window 中心,即使在移动父 window 时也是如此?谢谢:)

这是一个非常简单的例子,首选项 window 居中并且在移动它时父项也会移动(但取决于 window 经理):

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class AppWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Python Example")

        box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL,spacing=6)
        self.add(box)

        button1 = Gtk.Button("Information")
        button1.connect("clicked", self.on_button_clicked)
        box.add(button1)

        treeview = Gtk.TreeView()
        treeview.set_size_request(640,480)
        box.add(treeview)

    def on_button_clicked(self, widget):
        preferences_window = Gtk.Window (Gtk.WindowType.TOPLEVEL)
        preferences_window.set_title ("Preferences Window")
        preferences_window.set_modal (True)
        preferences_window.set_position(Gtk.WindowPosition.CENTER_ON_PARENT)
        preferences_window.set_transient_for(self)
        preferences_window.show_all()
        preferences_window.connect("delete-event", preferences_window.destroy);

win = AppWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

导致: