PYGTK 应用程序开发帮助

PYGTK 应用程序开发帮助

有人能给我一个基本的了解,当使用不同的按钮(如概览、要保存的文件夹、要忽略的文件夹)来更改窗口时,这里使用什么来更改窗口。如何在单个窗口中嵌入多个窗口

应用程序图像显示在此处

答案1

您发布的屏幕截图中的方法是通过 TreeView 和 ListStore 完成的。您需要创建一个窗口,其中有 Grid 小部件,在其中创建 TreeView 小部件,并通过 ListStore 提供内容。之后,您可以使用 在右侧附加其他小部件grid.attach_next_to(self.some_other_widget, view, Gtk.PositionType.RIGHT, 2, 1)。在本例中,示例是一个标签,但您可能可以在里面附加一个 Gtk.Box 和其他小部件。

请注意,此示例提供的是 Gtk-3 示例。PyGTK 适用于 Gtk-2,该示例的普及程度正在逐渐降低。

在此处输入图片描述

from gi.repository import Gtk
import sys

class MyWindow(Gtk.ApplicationWindow):

    def __init__(self, app):
        Gtk.Window.__init__(self, title="Some Title", application=app)
        self.set_default_size(100,100)

        listmodel = Gtk.ListStore(str)
        listmodel.append(['one'])
        listmodel.append(['two'])
        listmodel.append(['three'])

        view = Gtk.TreeView(model=listmodel)

        cell = Gtk.CellRendererText()
        col = Gtk.TreeViewColumn("Column Header", cell, text=0)
        view.append_column(col)

        view.get_selection().connect("changed", self.on_changed)

        self.label = Gtk.Label()
        self.label.set_text("")

        grid = Gtk.Grid()
        grid.attach(view, 0, 0, 1, 1)
        grid.attach_next_to(self.label, view, Gtk.PositionType.RIGHT, 2, 1)

        self.add(grid)

    def on_changed(self, selection):
        model,iterator = selection.get_selected()
        self.label.set_text("You selected "+model[iterator][0])
        return True


class MyApplication(Gtk.Application):

    def __init__(self):
        Gtk.Application.__init__(self)

    def do_activate(self):
        win = MyWindow(self)
        win.show_all()

    def do_startup(self):
        Gtk.Application.do_startup(self)

app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)

另一方面,使用起来可能更简单、更漂亮笔记本

更多信息请参见:

相关内容