#python #pygtk
Вопрос:
Gtk-WARNING **: 19:18:52.313: Can't set a parent on a toplevel widget
Почему я получаю это предупреждение? Разве master win не является виджетом верхнего уровня? Что я делаю не так?
Разве master_win не должен быть верхнего уровня? Он создается первым…
class PluginWindow(Gtk.Window):
def __init__(self):
super().__init__(title="Stack Demo")
#some stuff
master_win = Gtk.ScrolledWindow()
master_win.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS)
win = PluginWindow()
master_win.add(win)
win.connect("destroy", Gtk.main_quit)
master_win.show_all()
Gtk.main()
Ответ №1:
Вы неправильно оформили заказ
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class PluginWindow(Gtk.Window):
def __init__(self):
super().__init__(title="Stack Demo")
#some stuff
master_win = Gtk.ScrolledWindow()
master_win.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS)
win = PluginWindow()
win.add(master_win)
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
Ответ №2:
Вы пытаетесь добавить Gtk.Объект Window() в объект Gtk.ScrolledWindow (), и это невозможно. Это перевернуто.
Gtk.Окно-это окно верхнего уровня, которое может содержать другие виджеты. Окна обычно имеют украшения, которые находятся под контролем оконной системы и позволяют пользователю управлять окном (изменять его размер, перемещать, закрывать и т. д.).
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class PluginWindow(Gtk.Window):
def __init__(self):
super().__init__(title="Stack Demo")
# some stuff
master_win = Gtk.ScrolledWindow()
master_win.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS)
win = PluginWindow()
# Gtk.ScrolledWindow added to Gtk.Window
win.add(master_win)
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()