首页 > 解决方案 > Python将标签添加到父小部件

问题描述

我目前有这个代码:

import gi
import gettext
_ = gettext.gettext

gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')

from gi.repository import Gtk, Gio, GLib

class Invoicy(Gtk.Window):
    def __init__(self):

        Gtk.Window.__init__(self, title="Invoicy")
        self.set_border_width = 10
        self.set_default_size(800, 600)

        header_bar = Gtk.HeaderBar()
        header_bar.set_show_close_button(True)
        header_bar.props.title = "Invoicy"
        self.set_titlebar(header_bar)

        newbutton = Gtk.Button(None,image=Gtk.Image.new_from_gicon(Gio.ThemedIcon(name="document-new"), Gtk.IconSize.LARGE_TOOLBAR))
        header_bar.pack_start(newbutton)

        menubutton = Gtk.Button(None,image=Gtk.Image.new_from_gicon(Gio.ThemedIcon(name="open-menu"), Gtk.IconSize.LARGE_TOOLBAR))
        menubutton.connect("clicked", self.settingsdialog)
        header_bar.pack_end(menubutton)

        label = Gtk.Label("test")

        self.add(label)


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

现在我想要,当我点击newbutton调用一个在主窗口中添加新标签的函数时。这可能吗?如果是,我该怎么做?我现在试了几个小时。谢谢。

标签: python-3.xgtk

解决方案


您必须调用connect“newbutton”上的方法来添加添加标签的回调处理函数。

newbutton.connect("clicked", self.on_newbutton_clicked)

以及您的类中的回调处理程序方法Window

def on_newbutton_clicked(self, button):
    label = Gtk.Label("test")
    self.add(label)

推荐阅读