如何在Linux桌面下使用PyGObject创建GUI应用程序

2021-06-18 10:54:12 浏览数 (1)

在Linux上创建应用程序可以使用不同的方法,但是有一些有限的方法,所以使用最简单和最功能的编程语言和库,这就是为什么我们要快速查看在Linux下创建应用程序使用桌面上的GTK 库被称为“PyGObject”Python编程语言。

PyGObject使用GObject的反省创造像Python编程语言的结合,PyGObject是PyGTK的下一代,你可以说PyGObject = Python的 GTK3。

在Linux中创建GUI应用程序 - 第1部分

今天,我们要开始了一系列关于创建GUI(图形用户界面)使用GTK 库和PyGobject语言Linux桌面应用下,该系列将包括以下内容:

第1部分 :如何创建GUI应用程序在Linux桌面使用PyGObject

第2部分 : 在Linux上创建更高级的应用PyGobject

第3部分 : 创建您自己的“网络浏览器”和“桌面刻录机”应用程序使用PyGobject

第4部分 : 包装PyGobject程序用于Linux桌面

第5部分 : 翻译PyGobject应用成不同的语言

关于Python

首先,你必须在Python中的一些基本知识; Python是一种非常现代和易于使用的编程语言。 它是世界上最着名的编程语言之一,使用Python,您将能够创建许多伟大的应用程序和工具。 你可能需要像一些免费的课程,在codeacademy.com或者你可以在阅读Python的一些书:

关于GTK

GTK 是一个开源的跨平台工具包来创建桌面应用程序,它在1998年首次开始作为一个GUI工具包GIMP的图形用户界面,后来,它在许多其他应用中使用,并很快成为最有名的库来创建GUI。 GTK 是根据LGPL许可证发布的。

在Linux下创建GUI应用程序

使用GTK 和Python创建应用程序有2种方法:

  1. 仅使用代码编写图形界面。
  2. 设计采用“ 格莱德 ”程序图形界面; 这是RAD工具轻松设计GTK 接口,Glade生成GUI作为XML文件,可以使用任何编程语言构建GUI,导出GUI的XML文件后,我们将能够链接XML文件与我们的程序做我们想要的工作。

我们将简要解释两种方法。

代码唯一的方式

使用代码编写GUI可能对noob程序员来说有点困难,并且浪费时间,但是使用它,我们可以为我们的程序创建非常实用的GUI,比使用Glade等工具创建的GUI更多。

让我们来看下面的例子。

代码语言:javascript复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
class ourwindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="My Hello World Program")
Gtk.Window.set_default_size(self, 400,325)
Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER)
button1 = Gtk.Button("Hello, World!")
button1.connect("clicked", self.whenbutton1_clicked)
self.add(button1)
def whenbutton1_clicked(self, button):
print "Hello, World!"
window = ourwindow()        
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

复制上面的代码,将其粘贴在“test.py”文件,并设置在test.py文件755许可,然后再使用“./test.py”运行该文件,这就是你会得到什么。

代码语言:javascript复制
# nano test.py
# chmod 755 test.py
# ./test.py

Hello World脚本

通过点击按钮,你看到的“Hello,World!”的句子在终端打印出来:

测试Python脚本

让我解释一下代码的详细解释。

  1. #!的/ usr / bin中/ Python的 :对Python解释器(2.7版本在大多数情况下)的默认路径,这条线必须在每个Python文件的第一行。
  2. # - * -编码:UTF-8 - * - :在这里我们设置默认编码的文件,UTF-8是最好的,如果你想支持非英语语言,离开它这样。
  3. 从gi.repository进口的Gtk:在这里我们导入GTK 3库在我们的程序中使用它。
  4. 类ourwindow(Gtk.Window):这里我们创建一个新类,称为“ourwindow”,我们也将类对象类型设置为“Gtk.Window”。
  5. 高清__init __(个体经营):什么新东西,我们在这里定义主窗口中的组件。
  6. Gtk.Window .__的init __(自我,标题=“我的Hello World程序”):我们正在使用此行来设置“我的Hello World程序”标题“ourwindow”窗口,你可以,如果你想更改标题。
  7. Gtk.Window.set_default_size(个体经营,400325):我不认为这条线需要解释,在这里我们设置我们的窗口默认的宽度和高度。
  8. Gtk.Window.set_position(个体经营,Gtk.WindowPosition.CENTER):使用这条线,我们就可以设置默认位置为窗口,在这种情况下,我们把它设置为使用“Gtk.WindowPosition中心。 CENTER“参数,如果需要,可以将其更改为”Gtk.WindowPosition.MOUSE“,以在鼠标指针位置打开窗口。
  9. 按钮1 = Gtk.Button(“你好,世界!”):我们创建了一个新的Gtk.Button,我们把它称为“Button1的”,该按钮的默认文本为“你好,世界!”,你可以创建任意的Gtk部件如果你想。
  10. button1.connect(“点击”,self.whenbutton1_clicked):这里,我们的链接“点击”信号与“whenbutton1_clicked”行动,以便在单击按钮时,将“whenbutton1_clicked”动作被激活。
  11. self.add(按钮1):如果我们希望我们的GTK构件出现,我们必须将它们添加到默认的窗口,这个简单的行添加“按钮1”到窗口,这是非常必要的做到这一点。
  12. 高清whenbutton1_clicked(自我,键):现在我们在这里定义“whenbutton1_clicked”行动,我们定义这是怎么回事在单击“Button1的”窗口小部件时,将发生“(自我,键)”参数是为了重要以指定信号父对象类型。
  13. 打印“你好,世界!”我没有在这里解释了。
  14. 窗口= ourwindow():我们要创建一个新的全局变量并将其设置为ourwindow()类,这样我们就可以在以后使用GTK 库调用它。
  15. window.connect(“删除事件”,Gtk.main_quit):现在我们连接的“Gtk.main_quit”操作“删除事件”的信号,这是重要的,以便删除所有的部件我们关闭后,我们的程序窗口。
  16. window.show_all():显示窗口。
  17. Gtk.main():运行基于GTK库。

就是这样,容易不是? 如果我们想创建一些大型应用程序非常实用。 有关使用纯代码方式创建GTK 接口的更多信息,您可以访问官方文档网站:

Python GTK3教程

Glade设计师方式

就像我在文章开头所说的,Glade是一个非常容易的工具来创建我们的程序需要的接口,它在开发人员和许多伟大的应用程序界面之间是非常有名的。 这种方式称为“快速应用程序开发”。

你必须安装Glade为了开始使用它,在Debian / Ubuntu / Mint运行:

代码语言:javascript复制
$ sudo apt­-get install glade

在RedHat / Fedora / CentOS上,运行:

代码语言:javascript复制
# yum install glade

在您下载并安装该程序,并运行后,你会看到在左边的可用GTK构件,以创建一个新的窗口,单击“ 窗口 ”,窗口小部件。

创建新的窗口小部件

你会注意到一个新的空窗口被创建。

新窗口小部件

现在,您可以将某些小部件添加到它,左边的工具栏上,单击“ 按钮 ”控件,并以该按钮添加到窗口中单击空的窗口上。

添加小部件

你会发现,按键ID为“Button1的 ”,现在指的是信号标签右侧工具栏中,并搜索“ 点击 ”信号,并在其下输入“button1_clicked”。

按钮属性

信号选项卡

现在我们已经创建了GUI,让我们导出它。 点击“ 文件 ”菜单,选择“ 保存 ”,将文件保存在名为“myprogram.glade”,退出你的home目录。

导出窗口小部件文件

现在,创建一个新的“test.py”的文件,并进入里面的下面的代码。

代码语言:javascript复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
class Handler:
def button_1clicked(self, button):
print "Hello, World!"
builder = Gtk.Builder()
builder.add_from_file("myprogram.glade")
builder.connect_signals(Handler())
ournewbutton = builder.get_object("button1")
ournewbutton.set_label("Hello, World!")
window = builder.get_object("window1")
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

保存文件,给它像以前一样755的权限,并使用“./test.py”运行它,这就是你会得到什么。

代码语言:javascript复制
# nano test.py
# chmod 755 test.py
# ./test.py

Hello世界窗口

点击按钮,你会发现,“ 你好,世界 !”这句话就是终端打印。

现在让我们来解释一下新的东西:

  1. 类处理程序 :在这里,我们创建了一个名为“处理器”类,其中将包括采取的行动和信号的定义,我们创建的图形用户界面。
  2. 建设者= Gtk.Builder():我们创建了一个名为“建设者”,这是一个小部件Gtk.Builder一个新的全局变量,这是为了要导入的文件.glade重要。
  3. builder.add_from_file(“myprogram.glade”):在这里我们要导入的“myprogram.glade”文件,用它作为我们的程序默认的GUI。
  4. builder.connect_signals(处理程序()):该线路连接的处理程序类的.glade文件,让我们在“处理程序”级做工精细定义的动作和信号,当我们运行程序。
  5. ournewbutton = builder.get_object(“按钮1”):现在我们从.glade文件导入“按钮1”的对象,我们也把它传递给全局变量“ournewbutton”使用它以后在我们的节目。
  6. ournewbutton.set_label(“你好,世界!”):我们用“set.label”的方法为默认按钮文本设置为“你好,世界!”的句子。
  7. 窗口= builder.get_object(“窗口1”):在这里我们称之为从.glade文件中的“窗口1”的对象,以便在以后在节目中表现出来。

就是这样! 您已经在Linux下成功创建了第一个程序!

0 人点赞