Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 标记标记不';在TreeView列字符串的开头似乎不起作用_Python_Treeview_Gtk_Pygtk - Fatal编程技术网

Python 标记标记不';在TreeView列字符串的开头似乎不起作用

Python 标记标记不';在TreeView列字符串的开头似乎不起作用,python,treeview,gtk,pygtk,Python,Treeview,Gtk,Pygtk,我希望能够在我的TreeViewColumn中使用Pango标记,但是从字符串最开头开始的标记似乎会被忽略,除非我在字符串和标记之前预先挂起一个零宽度的空间 我注意到在我的TreeViewColumn文本中使用Pango标记可以很好地工作,当它不在文本的开头时,就像将单词的后缀置为灰色: “每周” 但我想要更多的对比度,所以我决定将字符串的其余部分加粗,如下所示: “每周” 在TreeViewColumn中使用此字符串时,粗体显示为正常,而不是粗体。但我知道粗体标记是有效的,因为我可以用粗体(而

我希望能够在我的TreeViewColumn中使用Pango标记,但是从字符串最开头开始的标记似乎会被忽略,除非我在字符串和标记之前预先挂起一个零宽度的空间

我注意到在我的TreeViewColumn文本中使用Pango标记可以很好地工作,当它不在文本的开头时,就像将单词的后缀置为灰色:

“每周”

但我想要更多的对比度,所以我决定将字符串的其余部分加粗,如下所示:

“每周”

在TreeViewColumn中使用此字符串时,粗体显示为正常,而不是粗体。但我知道粗体标记是有效的,因为我可以用粗体(而不是灰色)标记后缀,而且效果很好。似乎字符串开头的标记有问题,所以我尝试在字符串前面预挂起一个零宽度的空格:

“\u200b每周”

然后,粗体和灰色文本都显示良好

以下是一些代码片段,首先用于创建ListStore和TreeView:

    # create an empty ListStore for words and frequencies
    self.WordListStore = Gtk.ListStore(str, int)
    # create a TreeView to view the word/freq list and add to ScrolledWindow
    self.WordTreeView = Gtk.TreeView(self.WordListStore)
    sw.add(self.WordTreeView)
    sw.show()
    main_hb.pack_start(sw, True, True, 5)

    # add the columns to the TreeView, use of markup=0 allows us to put tags like <b> in the entries
    column = Gtk.TreeViewColumn("Word", myGlobalRenderer.vernRendererText, markup=0)
    column.set_sort_column_id(0)
    self.WordTreeView.append_column(column)
    column = Gtk.TreeViewColumn("Frequency", myGlobalRenderer.numRendererText, text=1)
    column.set_sort_column_id(1)
    self.WordTreeView.append_column(column)
#为单词和频率创建一个空列表存储
self.WordListStore=Gtk.ListStore(str,int)
#创建树视图以查看单词/频率列表并添加到滚动窗口
self.WordTreeView=Gtk.TreeView(self.WordListStore)
软件添加(self.WordTreeView)
sw.show()
主电池组启动(开关、正确、正确、5)
#将列添加到树视图,使用markup=0允许我们在条目中放置类似的标记
column=Gtk.TreeViewColumn(“Word”,myGlobalRenderer.vernRendererText,标记=0)
column.set\u sort\u column\u id(0)
self.WordTreeView.append_列(列)
column=Gtk.TreeViewColumn(“频率”,myGlobalRenderer.numrenderext,text=1)
column.set\u sort\u column\u id(1)
self.WordTreeView.append_列(列)
下面是我如何填充ListStore的代码片段:

    # start by clearing the list
    listStore.clear()
    prefMatch = re.compile('^<b>(' + '|'.join(a[:-1] for a in prefixes) + ')')
    suffMatch = re.compile('(' + '|'.join(a[1:] for a in suffixes) + ')</b>$')

    # add each of the words and its count
    for word in self.words:
        marked_word = '<b>' + word + '</b>'
        marked_word = prefMatch.sub('<span foreground="gray">\\1</span><b>', marked_word)
        marked_word = suffMatch.sub('</b><span foreground="gray">\\1</span>', marked_word)
        # put zero-width space in front, or markup doesn't appear
        marked_word = '\u200B' + marked_word
        listStore.append([marked_word, self.words[word]])
    # start with descending count order
    # (but user can sort by clicking column headers)
    listStore.set_sort_column_id(1, Gtk.SortType.DESCENDING)
#首先清除列表
listStore.clear()
prefMatch=re.compile(“^”(“+”|“.join(a[:-1]表示前缀中的a)+”))
suffMatch=re.compile(“(“+”|“.join(a[1:]表示后缀中的“+”)$”)
#加上每个单词及其计数
对于self.words中的单词:
已标记的单词=“”+单词+“”
已标记的单词=prefMatch.sub('\\1',已标记的单词)
已标记的单词=suffMatch.sub('\\1',已标记的单词)
#将零宽度空间放在前面,否则标记不会出现
带标记的单词='\u200B'+带标记的单词
listStore.append([marked_word,self.words[word]]))
#从递减计数顺序开始
#(但用户可以通过单击列标题进行排序)
listStore.set_sort_column_id(1,Gtk.SortType.DESCENDING)
我没有给出变量的详细信息,但关键的细节是标记为粗体(或在字符串开头有任何标记)的单词不会使用初始标记显示。但是如果我在字符串的开头添加'\u200B',则标记看起来很好


这是Pango标记的bug吗?我希望字符串开头的标记能够正确显示,就像字符串中其他地方的标记一样,但事实并非如此。

听起来像是一个bug,需要在