GtkGrid 中的动态数据

Dynamic data in GtkGrid

我正在使用 Python GTK+ 3。我无法在按钮信号中向 GtkGrid 添加数据(当我在信号中调用附加方法时没有任何反应)。这是代码:

# -*- coding: utf-8 -*-
from gi.repository import Gtk, GObject, Gdk
import sqlite3

class MainWindow(Gtk.Window):

def __init__(self):
    Gtk.Window.__init__(self, title="1")
    self.fullscreen()
    MainBox = Gtk.Box()
    MainBox.set_orientation(Gtk.Orientation.VERTICAL) 
    self.add(MainBox)
    self.table = Gtk.Grid()
    self.table.set_column_spacing(10)
    MainBox.pack_start(self.table, False, True, 0)
    btn_add = Gtk.Button("ADD VALS")
    btn_add.connect("clicked", self.add_kopd)
    MainBox.pack_start(btn_add, False, True, 0)
    self.table.attach(Gtk.Label("1"), 0,0,1,1)
    self.table.attach(Gtk.Label("2"), 1,0,1,1)
    self.table.attach(Gtk.Label("3"), 2,0,1,1)

def add_kopd(self, widget):
    self.table.attach(Gtk.Label("4"), 0,1,1,1)
    self.table.attach(Gtk.Label("5"), 1,1,1,1)
    self.table.attach(Gtk.Label("6"), 2,1,1,1)

win = MainWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

您需要设置要显示的新小部件。在 GTK 中,默认情况下不会显示任何内容。将您的 add_kopd 方法修改为:

def add_kopd(self, widget):
    self.table.attach(Gtk.Label("4"), 0,1,1,1)
    self.table.attach(Gtk.Label("5"), 1,1,1,1)
    self.table.attach(Gtk.Label("6"), 2,1,1,1)
    self.show_all()

或者,如果您不想调用 show_all()

def add_kopd(self, widget):
    window, attachment = self.table.attach(Gtk.Label("4"), 0,1,1,1)
    attachment.show()
    ...