📜  PyGTK教程(1)

📅  最后修改于: 2023-12-03 15:33:50.726000             🧑  作者: Mango

PyGTK教程

PyGTK是用于创建GUI应用程序的Python工具包。它基于GTK(GIMP工具包),是一种跨平台工具包,可以在Linux,Windows和MacOS等多个平台上使用。该教程介绍了PyGTK的基础知识,包括窗口,按钮,文本框等常用控件,以及事件处理和布局管理等概念。

安装PyGTK

在使用PyGTK之前,需要先安装它。在Linux中,可以使用以下命令:

sudo apt-get install python-gtk2

在Windows中,可以从这里下载并安装PyGTK预编译包。

基本控件
创建窗口

PyGTK中的窗口是GTK中的GtkWindow类的实例。以下是创建一个窗口的基本代码:

import gtk

class HelloWorld:

    def __init__(self):
        # 创建窗口
        self.window = gtk.Window()
        # 设置窗口标题
        self.window.set_title("Hello World")
        # 连接信号和槽
        self.window.connect("destroy", self.destroy)

        # 显示窗口
        self.window.show_all()

    def destroy(self, widget, data=None):
        # 退出应用程序
        gtk.main_quit()

# 创建应用程序
hello = HelloWorld()
# 运行应用程序
gtk.main()

代码说明:

  • 我们创建了一个名为HelloWorld的类作为我们应用程序的主体。
  • gtk.Window()方法用于创建窗口对象。
  • set_title()方法用于设置窗口的标题。
  • connect()方法用于连接窗口关闭事件。
  • show_all()方法用于显示窗口。
创建按钮

PyGTK中的按钮是GTK中的GtkButton类的实例。以下是创建一个按钮的基本代码:

import gtk

class HelloWorld:

    def __init__(self):
        # 创建窗口
        self.window = gtk.Window()
        
        # 创建按钮
        self.button = gtk.Button("Hello World")
        # 连接按钮点击事件
        self.button.connect("clicked", self.say_hello)

        # 将按钮添加到窗口
        self.window.add(self.button)
        # 显示窗口
        self.window.show_all()

    def say_hello(self, widget, data=None):
        # 显示"Hello World"消息框
        dialog = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL,
            gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Hello World")
        dialog.run()
        dialog.destroy()

# 创建应用程序
hello = HelloWorld()
# 运行应用程序
gtk.main()

代码说明:

  • 我们创建了一个名为HelloWorld的类作为我们应用程序的主体。
  • gtk.Button()方法用于创建按钮对象。
  • connect()方法用于连接按钮点击事件。
  • add()方法用于添加按钮到窗口。
  • gtk.MESSAGE_INFO用于指定消息框的类型为信息框。
  • gtk.BUTTONS_OK用于指定消息框的按钮类型为OK按钮。
创建文本框

PyGTK中的文本框是GTK中的GtkEntry类的实例。以下是创建一个文本框的基本代码:

import gtk

class HelloWorld:

    def __init__(self):
        # 创建窗口
        self.window = gtk.Window()
        
        # 创建文本框
        self.entry = gtk.Entry()
        # 连接文本框修改事件
        self.entry.connect("changed", self.print_text)

        # 将文本框添加到窗口
        self.window.add(self.entry)
        # 显示窗口
        self.window.show_all()

    def print_text(self, widget, data=None):
        # 打印文本框中的内容
        print(self.entry.get_text())

# 创建应用程序
hello = HelloWorld()
# 运行应用程序
gtk.main()

代码说明:

  • 我们创建了一个名为HelloWorld的类作为我们应用程序的主体。
  • gtk.Entry()方法用于创建文本框对象。
  • connect()方法用于连接文本框修改事件。
  • gtk.Entry.get_text()方法用于获取文本框中的内容。
事件处理

PyGTK中的事件是由信号和槽机制处理的。当控件触发一个信号时,将执行该信号所连接的槽。以下是一些常用的信号和槽:

信号 | 描述 | 对应槽 ----|------|------ destroy | 窗口关闭事件 | destroy clicked | 按钮点击事件 | 自定义 changed | 文本框修改事件 | 自定义

布局管理

在PyGTK中,有多种方法可以管理控件的布局,以下是介绍其中两种方法:

盒式容器(GtkVBox和GtkHBox)

盒式容器(GtkVBox和GtkHBox)是PyGTK中的两个基本布局管理器。它们可以将控件纵向或横向地组织在一起。以下是一个使用盒式容器来布局控件的示例代码:

import gtk

class HelloWorld:

    def __init__(self):
        # 创建窗口
        self.window = gtk.Window()
        
        # 创建纵向盒式容器
        vbox = gtk.VBox()

        # 创建横向盒式容器
        hbox = gtk.HBox()

        # 创建按钮和文本框
        self.button = gtk.Button("Submit")
        self.entry = gtk.Entry()

        # 将按钮和文本框添加到横向盒式容器
        hbox.pack_start(self.button)
        hbox.pack_start(self.entry)

        # 创建文本区域
        self.textview = gtk.TextView()

        # 将横向盒式容器和文本区域添加到纵向盒式容器
        vbox.pack_start(hbox)
        vbox.pack_start(self.textview)

        # 将纵向盒式容器添加到窗口
        self.window.add(vbox)

        # 显示窗口
        self.window.show_all()

# 创建应用程序
hello = HelloWorld()
# 运行应用程序
gtk.main()

代码说明:

  • 我们创建了一个名为HelloWorld的类作为我们应用程序的主体。
  • gtk.VBox()gtk.HBox()用于创建纵向和横向盒式容器。
  • gtk.Box.pack_start()方法用于将控件添加到盒式容器中。
表格容器(GtkTable)

表格容器(GtkTable)是另一种常用的布局管理器,它允许您将控件以网格形式排列。以下是一个使用表格容器来布局控件的示例代码:

import gtk

class HelloWorld:

    def __init__(self):
        # 创建窗口
        self.window = gtk.Window()

        # 创建表格容器
        self.table = gtk.Table(2, 2)

        # 创建按钮和文本框
        self.button = gtk.Button("Submit")
        self.entry = gtk.Entry()

        # 将按钮和文本框添加到表格容器的第一行
        self.table.attach(self.button, 0, 1, 0, 1)
        self.table.attach(self.entry, 1, 2, 0, 1)

        # 创建文本区域
        self.textview = gtk.TextView()

        # 将文本区域添加到表格容器的第二行
        self.table.attach(self.textview, 0, 2, 1, 2)

        # 将表格容器添加到窗口
        self.window.add(self.table)

        # 显示窗口
        self.window.show_all()

# 创建应用程序
hello = HelloWorld()
# 运行应用程序
gtk.main()

代码说明:

  • 我们创建了一个名为HelloWorld的类作为我们应用程序的主体。
  • gtk.Table()用于创建表格容器。
  • gtk.Table.attach()用于将控件添加到表格容器中,并确定控件在表格中的位置。
结论

本教程介绍了PyGTK的基础知识,包括窗口,按钮,文本框等常用控件,以及事件处理和布局管理等概念。随着您更深入地了解PyGTK,您将能够将其用于创建强大的GUI应用程序。