Я пытаюсь подать некоторую мини-заявку 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 | некоторый текст |
Всегда обеспечивайте полный 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
.
Я получил эту ошибку, когда у меня был набор атрибута GtkCellRendererText text
к основанному на нуле индексу на столбце, который не существовал.