Динамично добавьте или удалите объекты из списка и дерева в pygtk и быстро (поляне)

Я пытаюсь подать некоторую мини-заявку CRM в Python с помощью gtk (pygtk), поляне и начал разрабатывать его использующий быстро (который является потрясающим).

Я создаюсь некоторые диалоговые окна и добавляюсь listview к GUI с помощью поляны), но когда я пытаюсь добавить некоторые объекты к списку динамично из сценария, что glade\quickly, созданный так приложение, покажет некоторые данные пользователю, который звонил от MySql (если существует другая опция плохо радоваться здесь о..) это показывает много ошибок вместо этого (в терминале).

Я искал некоторые учебные руководства, но все, что я нашел, является только работами, которые объясняют, как создать список с нуля (не использующий быстро и поляну).

Вот код:

Это - applicationWindow.py который созданный быстро

Я добавил абсолютный код для диалоговых окон кнопок и так...

import gettext
from gettext import gettext as _
gettext.textdomain('ubuntucrm')

from gi.repository import Gtk # pylint: disable=E0611
import logging
logger = logging.getLogger('ubuntucrm')

from ubuntucrm_lib import Window
from ubuntucrm.AboutUbuntucrmDialog import AboutUbuntucrmDialog
from ubuntucrm.PreferencesUbuntucrmDialog import PreferencesUbuntucrmDialog
from ubuntucrm.PopupcalendarDialog import PopupcalendarDialog
from ubuntucrm.NewcustomerDialog import NewcustomerDialog
from ubuntucrm.GlobalsearchDialog import GlobalsearchDialog

# See ubuntucrm_lib.Window.py for more details about how this class works
class UbuntucrmWindow(Window):
    __gtype_name__ = "UbuntucrmWindow"

def finish_initializing(self, builder): # pylint: disable=E1002
    """Set up the main window"""
    super(UbuntucrmWindow, self).finish_initializing(builder)

    self.AboutDialog = AboutUbuntucrmDialog
    self.PreferencesDialog = PreferencesUbuntucrmDialog
    #self.PopupcalendarDialog = PopupcalendarDialog

    # Code for other initialization actions should be added here.

    self.CalendarButton = self.builder.get_object("CalendarButton")
    self.contactsButton = self.builder.get_object("contactsButton")
    self.productsButton = self.builder.get_object("productsButton")
    self.OtherButton    = self.builder.get_object("OtherButton")

    #dialogs
    self.cal = PopupcalendarDialog()
    self.contactsDialog = NewcustomerDialog()
    self.globalsearcher = GlobalsearchDialog()

    #lists and modelers
    self.leftTree    = self.builder.get_object("leftTreeview")
    self.treeModeler = self.builder.get_object("liststorer1")


    #functions
def on_OtherButton_clicked(self, widget):
    print "you clicked OtherButton"

//здесь я попробовал что-то как:

    self.treeModeler.append(["bla bla","some text"])

//например, "bla bla" загруженный из некоторого MySQL Database..

def on_productsButton_clicked(self, widget):
    print "you clicked producs button" 
    self.globalsearcher.run()


def on_contactsButton_clicked(self, widget):
    print "you clicked contactButton "
    self.contactsDialog.run()


def on_CalendarButton_clicked(self, widget):
    print "calling to calendar button"
    self.cal.run()

Ошибка:

 (ubuntucrm:10443): Gtk-CRITICAL **: gtk_list_store_get_value: assertion `column < priv->n_columns' failed

и порядок является неправильным


Текст |some | bla bla |


вместо:


| bla bla | некоторый текст |


2
задан 5 September 2012 в 14:55

2 ответа

Всегда обеспечивайте полный traceback и дополнительные предупреждения/вывод. Тем не менее Ваша проблема находится в следующей строке кода:

    self.treeModeler.append("bla bla")

необходимо предоставить список объектов, который соответствует столбцам в Gtk.TreeModel. Таким образом, если Ваша модель только имеет 1 строковый столбец, простой помещает некоторые скобки вокруг Вашей строки:

    self.treeModeler.append(["bla bla"])

у Вас есть больше столбцов с различными типами? Обеспечьте их в своем списке:

    self.treeModeler.append(["bla bla", 1234, False, 1.234, GdkPixbuf.Pixbuf, None])

Редактирование к Вашему редактированию : Помните что Вы добавленные стоимости к эти Gtk.TreeModel столбцы, не Gtk.TreeView столбцы. См. мои снимки экрана в этот ответ и удостоверьтесь, что Вы отобразили каждый Gtk.TreeModel столбец к корректному Gtk.CellRendererText.

0
ответ дан 21 October 2019 в 11:07

Я получил эту ошибку, когда у меня был набор атрибута GtkCellRendererText text к основанному на нуле индексу на столбце, который не существовал.

0
ответ дан 21 October 2019 в 11:07

Другие вопросы по тегам:

Похожие вопросы: