我有一個設置了一些窗口小部件的窗口,但我希望這些窗口小部件的信息在用戶輸入(例如按鈕點擊)後被更新。另外,我希望事件處理程序能夠將新小部件添加到窗口中。 我附上了一個嘗試以下簡單版本的問題。顯然它不起作用。如何更新窗口中的窗口小部件並將新的窗口小部件添加到PyGObject中的窗口中?
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gdk, Gtk
class Button(Gtk.Box):
def __init__(self, message, label, window_grid):
Gtk.Box.__init__(self, spacing=6)
self.set_border_width(10)
self.label = label
self.window_grid = window_grid
button = Gtk.Button.new_with_label(message)
button.connect("clicked", self.on_click)
self.pack_start(button, True, True, 0)
def on_click(self, widget):
# Change/update a label in the window_grid
self.label = LabelBox("Changed the label")
self.label.queue_draw()
# Add a new label to the window_grid
new_label = LabelBox("New label")
self.window_grid.attach(new_label, 0, 2, 1, 1)
class LabelBox(Gtk.Box):
def __init__(self, message):
Gtk.Box.__init__(self, spacing=6)
self.set_border_width(10)
label = Gtk.Label(message)
self.pack_start(label, True, True, 0)
win = Gtk.Window()
window_grid = Gtk.Grid()
label = LabelBox("This is a label")
button = Button("Test", label, window_grid)
window_grid.attach(label, 0, 0, 1, 1)
window_grid.attach(button, 0, 1, 2, 2)
win.add(window_grid)
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
控件默認爲隱藏。 – andlabs