Вставить Gtk.AboutDialog в Gtk.Notebook без повторного родителя - PullRequest
0 голосов
/ 19 июня 2020

Эта программа python3 встраивает Gtk.AboutDialog на страницу Gtk.Notebook . Начиная с версии 3.14 Gtk, функция reparent устарела. В документации reparent сказано заменить его функциями Gtk.Container.remove () и Gtk.Container.add () . Возможно ли это в данной ситуации? Если да, то как? Это изменение предназначено для будущего приложения, когда переопределение больше не поддерживается.

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

class MyWindow(Gtk.Window):
  def __init__(self):
    Gtk.Window.__init__(self, title="AboutDialog in notebook")

    notebook = Gtk.Notebook()
    self.add(notebook)

    page1 = Gtk.Box()
    page1.add(Gtk.Label(label="Default Page!"))
    notebook.append_page(page1, Gtk.Label(label="Default"))

    page2 = Gtk.Box()
    notebook.append_page(page2,
      Gtk.Image.new_from_icon_name("help-about", Gtk.IconSize.MENU))

    aboutdialog = Gtk.AboutDialog()
    aboutdialog.set_logo_icon_name(Gtk.STOCK_ABOUT)
    # Replace reparent with Gtk.Container.remove() and Gtk.Container.add() ?
    aboutdialog.vbox.reparent(page2)

win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

Gobject.ref () и Gobject.unref () методы не поддерживаются в моей системе.

AboutDialog может отображаться как отдельное окно, но это не оптимальное решение.

Эта программа работает на Linux Mint 18.3 с Python 3.5 и Gtk 3.18.

...