Gtk.Notebook页面标签使用python gtk3错误的样式

时间:2016-10-11 21:47:27

标签: python gtk3

我目前正在Python / Gtk3中编写一个在其主窗口中使用Gtk.Notebook的应用程序。笔记本的页面选项卡都使用Gtk.Label来显示页面名称。

我遇到了以下奇怪的行为,并想知道这是由于我的错误,还是我应该向Gtk3开发人员提交的错误。

首先,让我展示一下“可疑的”'代码:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class MyWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Example without Gtk.Box")
        self.set_default_size(400, 300)

        self.notebook = Gtk.Notebook()
        self.add(self.notebook)

        self.page1 = Gtk.Label('Label 1')
        self.notebook.append_page(self.page1, Gtk.Label('Page 1'))

        self.page2 = Gtk.Label('Label 2')
        self.notebook.append_page(self.page2, Gtk.Label('Page 2'))

        self.page3 = Gtk.Label('Label 3')
        self.notebook.append_page(self.page3, Gtk.Label('Page 3'))

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

此处,笔记本页面(例如self.page1)始终是Gtk.Label个直接附加到笔记本中的对象。

结果如下:

Gtk.Notebook with Gtk.Label pages

活跃标签的风格" Page 1"是黑色/粗体(这是正确的),标签的样式" Page 3"是灰色/粗体(再次,正确)但标签的样式" Page 2"是正常/黑色(这是错误的!)。将鼠标悬停在标签上时,标签将变为粗体,并且由于需要更多空间,因此标签标记为" Page 34"跳到右边。这可能不对。

此外,在页面选项卡标签之间随机切换几次(10 ... 20)次后,单击窗口标题将导致页面选项卡标签中的样式更改,因此再次跳转标签。

现在稍加修改的代码:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class MyWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Example with Gtk.Box")
        self.set_default_size(400, 300)

        self.notebook = Gtk.Notebook()
        self.add(self.notebook)

        self.page1 = Gtk.Box()
        self.page1.add(Gtk.Label('Label 1'))
        self.notebook.append_page(self.page1, Gtk.Label('Page 1'))

        self.page2 = Gtk.Box()
        self.page2.add(Gtk.Label('Label 2'))
        self.notebook.append_page(self.page2, Gtk.Label('Page 2'))

        self.page3 = Gtk.Box()
        self.page3.add(Gtk.Label('Label 3'))
        self.notebook.append_page(self.page3, Gtk.Label('Page 3'))

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

这里唯一的区别是笔记本页面是Gtk.Box个对象,Gtk.Label个对象被添加到其中。

结果看起来符合预期(""" Page 3"具有相同和正确的风格):

Gtk.Notebook with Gtk.Box pages

页面内容现在左对齐,但这可能是由Gtk.Box行为造成的,可以更改。

但是,此代码不会出现任何其他奇怪的行为。我可以随心所欲地在笔记本的各页之间随意切换。

所以第一个问题是: 我在第一个版本(我的初始版本)中犯了错误吗?据我所知,Gtk.Notebook个对象的附加页面应该是Gtk.Widget个对象。 Gtk.LabelGtk.Box都继承自Gtk.Widget,所以它应该没有区别(?)。

其次: 有没有人可以重现第一个附加代码示例的怪异行为?

0 个答案:

没有答案