GtkGrid中的动态数据

时间:2016-07-22 10:54:46

标签: pygtk gtk3

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

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

1 个答案:

答案 0 :(得分:2)

您需要设置要显示的新小部件。在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()
    ...