首页 > 解决方案 > Python GTK+ 3 - 无法在顶级小部件上设置父级

问题描述

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()

标签: pythonpygtk

解决方案


您正在尝试将 Gtk.Window() 对象添加到 Gtk.ScrolledWindow() 对象中,这是不可能的。是颠倒的。

Gtk.Window 是一个可以包含其他小部件的顶级窗口。窗口通常具有受窗口系统控制的装饰,并允许用户操作窗口(调整窗口大小、移动窗口、关闭窗口……)。

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()

推荐阅读