【问题标题】:Can't attach widget to my grid无法将小部件附加到我的网格
【发布时间】:2015-09-26 21:20:05
【问题描述】:

我正在尝试使用循环创建小部件。这是我尝试过的:

def set_runways(self, airfield):
        i = 0
        for rwy in airfield['Runways']:
            frame = Gtk.Frame()
            frame.set_label('-'.join([rwy['Runway_1'], rwy['Runway_2']]))
            frame.set_shadow_type(1)

            self.runways_layout.attach(frame, (i / 2), (i % 2), 1, 1)

            rwy_layout = Gtk.Grid()
            frame.add(rwy_layout)

            # Just for testing :
            label = Gtk.Label('Hello, World')
            rwy_layout.attach(label, 0, 0, 1, 1)

我将我的runways_layout 导入我的__init__self.runways_layout = builder.get_object('runwaysGrid'),这是一个Gtk.Grid,然后我用self.set_runways(airfield) 调用我的函数。但即使这样,我的窗口也没有显示Hello World,我有一个空白窗口......为什么?

我指定我的rwy 不为空。

感谢您的帮助。

编辑:
好的,我尝试了这个简单的事情:

self.runways_layout = builder.get_object('runwaysGrid')

label = Gtk.Label('Coucou')
self.runways_layout.attach(label, 0, 0, 1, 1)

而且它也不起作用...... O_o

【问题讨论】:

    标签: python python-3.x pygobject


    【解决方案1】:

    好的,我找到了解决方案,我必须这样做:

    self.runways_layout = builder.get_object('runwaysGrid')
    
    label = Gtk.Label('Coucou')
    self.runways_layout.attach(label, 0, 0, 1, 1)
    
    label.show()  # Add this and it works...
    

    但是为什么呢?

    【讨论】:

    • “为什么”是什么意思?阅读参考资料中的 show(9 和 show_all() 方法,您会发现。
    • 在我的另一个窗口中,我不必写label.show()。我不明白为什么。
    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    相关资源
    最近更新 更多