【python】使用GtkPaned的程序

一、GTK小部件(widgets)

GTK(GIMP Toolkit)是一种广泛使用的图形用户界面工【python】使用GtkPaned的程序_第1张图片具包,用于创建跨平台的GUI应用程序。它提供了许多构建用户界面的控件,称为"小部件"(widgets)。以下是GTK中可用的一些基本和常见小部件:
1. GtkWindow: 顶层窗口,用于包含其他小部件。
2. GtkButton: 按钮,用户可以点击执行动作。
3. GtkLabel: 显示文本或图标。
4. GtkEntry: 单行文本输入框。
5. GtkTextView: 多行文本编辑控件。
6. GtkComboBox: 下拉列表,允许用户从一系列选项中选择。
7. GtkCheckButton: 复选框,用户可选取或清除。
8. GtkRadioButton: 单选按钮,通常用于一组互斥的选择中。
9. GtkListBox: 用于表示列表数据的列表框。
10. GtkTreeView: 用于显示分层数据或列表数据的树形视图。
11. GtkNotebook: 标签页,它可以有多个子页签,用户可以切换。
12. GtkMenuBar: 菜单栏,通常位于窗口的顶部。
13. GtkMenu: 菜单,可以包含多个菜单项。
14. GtkMenuItem: 菜单项,用户点击执行动作。
15. GtkToolbar: 工具栏,携带按钮或其他控件,快速访问程序功能。
16. GtkStatusbar: 状态栏,显示状态信息或帮助文本。
17. GtkScrolledWindow: 带有滚动条的窗口,用于包含需要滚动的小部件。
18. GtkFrame: 框架,可用于在小部件周围放置边框。
19. GtkPaned: 分隔面板,允许用户调整子小部件的大小。
20. GtkDialog: 对话框,用于临时收集用户输入。
21. GtkScale: 滑动条,允许用户通过滑块选择一个值。
22. GtkProgressBar: 进度条,表明某个任务的完成进度。
23. GtkSpinner: 转动的动画,显示正在进行的活动。
24. GtkImage: 用于显示图像。
25. GtkFileChooser: 文件选择器,用户可以通过它选择文件或目录。
GTK还提供了其他高级小部件,如`GtkStack`, GtkHeaderBar, GtkSearchBar, GtkPopover等,以及各种容器小部件(如`GtkBox`, GtkGrid, GtkEventBox等)组织其他小部件。此外,GTK的主题和CSS功能也允许自定义小部件样式。

二、使用GtkPaned的程序

以下是一个利用GTK+ 3和Python编写的简单示例程序,使【python】使用GtkPaned的程序_第2张图片用了`Gtk.Paned`作为布局容器。在这个例子中,我们将创建一个窗口,它包含一个水平分割面板,分割面板的左侧是一个文本输入框(`Gtk.TextView`),右侧是一个列表视图(`Gtk.TreeView`)。首先,按照上一个答案中提到的步骤,确保你的Windows环境中已经正确安装了Python、PyGObject和GTK+运行时环境。下面是示例程序的代码:

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

class PanedWindow(Gtk.Window):
    def __init__(self):
        super(PanedWindow, self).__init__(title='GtkPaned Example')
        self.set_default_size(450, 350)

        # 创建一个水平GtkPaned
        self.paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)
        self.add(self.paned)

        # 添加左侧的组件,一个文本输入框
        self.text_view = Gtk.TextView()
        self.scrolled_text = Gtk.ScrolledWindow()
        self.scrolled_text.set_policy(
            Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        self.scrolled_text.add(self.text_view)
        self.paned.pack1(self.scrolled_text, resize=True, shrink=False)

        # 添加右侧的组件,一个列表视图
        self.store = Gtk.ListStore(str)
        self.tree_view = Gtk.TreeView(model=self.store)
        renderer = Gtk.CellRendererText()
        column = Gtk.TreeViewColumn('Items', renderer, text=0)
        self.tree_view.append_column(column)

        # 添加一些示例列表项
        for item in ['Item 1', 'Item 2', 'Item 3']:
            self.store.append([item])

        self.scrolled_tree = Gtk.ScrolledWindow()
        self.scrolled_tree.set_policy(
            Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        self.scrolled_tree.add(self.tree_view)
        self.paned.pack2(self.scrolled_tree, resize=True, shrink=False)

    def run(self):
        self.connect('destroy', Gtk.main_quit)
        self.show_all()
        Gtk.main()

if __name__ == '__main__':
    win = PanedWindow()
    win.run()

在运行此代码后,应该会看到一个窗口,里面有一个分割面板,可以通过拖动面板中间的分隔栏来调整两侧区域的大小。左侧是一个可以输入文本的文本输入区域,右侧是一个展示简单列表项的列表视图。要执行上面的程序,将代码保存到一个文件中(例如`paned_example.py`),然后使用Python运行这个文件:

python paned_example.py

确保环境变量PATH包含了Python和GTK+的路径,以便程序能够找到必要的库文件。

三、包含GtkNotebook、GtkPaned、GtkMenu、GtkToolbar、GtkStatusbar和GtkDialog程序

以下是一个简单的Python程序,其中包含了GtkNotebook、【python】使用GtkPaned的程序_第3张图片GtkPaned、GtkMenu、GtkToolbar、GtkStatusbar和GtkDialog组件。这个程序创建了一个包含这些组件的基本窗口。
请按照前面提到的步骤确保安装了GTK+3和PyGObject,并在Windows机器上正确配置了环境。
程序代码如下:

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

class MyApplication(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="GTK Application with Many Widgets")
        self.set_default_size(600, 400)

        # 创建主布局
        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        self.add(vbox)

        # 创建并填充菜单
        menu_bar = self.create_menu_bar()
        vbox.pack_start(menu_bar, expand=False, fill=False, padding=0)

        # 创建工具栏
        toolbar = self.create_toolbar()
        vbox.pack_start(toolbar, expand=False, fill=False, padding=0)

        # 创建带有GtkNotebook的GtkPaned
        paned = Gtk.Paned()
        vbox.pack_start(paned, expand=True, fill=True, padding=0)

        # 创建并填充状态栏
        statusbar = Gtk.Statusbar()
        vbox.pack_start(statusbar, expand=False, fill=False, padding=0)

        # 在paned组件中添加内容
        notebook = Gtk.Notebook()
        paned.add1(notebook)
        paned.add2(Gtk.Label("这里是右侧面板"))
        paned.show_all()

        # 添加两个tabs
        for i in range(1, 3):
            label = "Tab {}".format(i)
            notebook.append_page(Gtk.Label(label=label), Gtk.Label(label))

    def create_menu_bar(self):
        # 创建菜单栏
        menu_bar = Gtk.MenuBar()

        # 创建 "File" 菜单
        file_menu = Gtk.Menu()
        file_item = Gtk.MenuItem("File")
        file_item.set_submenu(file_menu)

        # 添加 "Open" 项,通过弹出对话框来响应
        open_item = Gtk.MenuItem("Open")
        open_item.connect("activate", self.on_open_activate)
        file_menu.append(open_item)

        # 添加 "Exit" 项
        exit_item = Gtk.MenuItem("Exit")
        exit_item.connect("activate", Gtk.main_quit)
        file_menu.append(exit_item)

        # 将 "File" 菜单添加到菜单栏
        menu_bar.append(file_item)

        return menu_bar

    def create_toolbar(self):
        toolbar = Gtk.Toolbar()
        open_btn = Gtk.ToolButton(Gtk.STOCK_OPEN)
        open_btn.connect("clicked", self.on_open_activate)
        toolbar.insert(open_btn, 0)
        exit_btn = Gtk.ToolButton(Gtk.STOCK_QUIT)
        exit_btn.connect("clicked", Gtk.main_quit)
        toolbar.insert(exit_btn, 1)
        return toolbar

    def on_open_activate(self, widget):
        dialog = Gtk.FileChooserDialog(
            title="Please choose a file",
            parent=self,
            action=Gtk.FileChooserAction.OPEN,
            buttons=(
                Gtk.STOCK_CANCEL,
                Gtk.ResponseType.CANCEL,
                Gtk.STOCK_OPEN,
                Gtk.ResponseType.OK,
            ),
        )
        response = dialog.run()
        if response == Gtk.ResponseType.OK:
            print("Open clicked", "File selected: " + dialog.get_filename())
        elif response == Gtk.ResponseType.CANCEL:
            print("Cancel clicked")
        dialog.destroy()


win = MyApplication()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

请确保在运行这段代码之前,已经安装了所有必要的依赖项。这个程序会创建一个具有菜单栏、工具栏、拖动条、多页签和状态栏的窗口。它也响应“Open”菜单项和工具栏按钮的点击,弹出一个文件选择对话框。程序中的`Gtk.main_quit`函数调用用于退出GTK主循环,关闭应用程序。 

你可能感兴趣的:(编程,#,python,#,linux,python,开发语言)