在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种方法:
- 仅使用代码编写图形界面。
- 设计采用“ 格莱德 ”程序图形界面; 这是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脚本
让我解释一下代码的详细解释。
- #!的/ usr / bin中/ Python的 :对Python解释器(2.7版本在大多数情况下)的默认路径,这条线必须在每个Python文件的第一行。
- # - * -编码:UTF-8 - * - :在这里我们设置默认编码的文件,UTF-8是最好的,如果你想支持非英语语言,离开它这样。
- 从gi.repository进口的Gtk:在这里我们导入GTK 3库在我们的程序中使用它。
- 类ourwindow(Gtk.Window):这里我们创建一个新类,称为“ourwindow”,我们也将类对象类型设置为“Gtk.Window”。
- 高清__init __(个体经营):什么新东西,我们在这里定义主窗口中的组件。
- Gtk.Window .__的init __(自我,标题=“我的Hello World程序”):我们正在使用此行来设置“我的Hello World程序”标题“ourwindow”窗口,你可以,如果你想更改标题。
- Gtk.Window.set_default_size(个体经营,400325):我不认为这条线需要解释,在这里我们设置我们的窗口默认的宽度和高度。
- Gtk.Window.set_position(个体经营,Gtk.WindowPosition.CENTER):使用这条线,我们就可以设置默认位置为窗口,在这种情况下,我们把它设置为使用“Gtk.WindowPosition中心。 CENTER“参数,如果需要,可以将其更改为”Gtk.WindowPosition.MOUSE“,以在鼠标指针位置打开窗口。
- 按钮1 = Gtk.Button(“你好,世界!”):我们创建了一个新的Gtk.Button,我们把它称为“Button1的”,该按钮的默认文本为“你好,世界!”,你可以创建任意的Gtk部件如果你想。
- button1.connect(“点击”,self.whenbutton1_clicked):这里,我们的链接“点击”信号与“whenbutton1_clicked”行动,以便在单击按钮时,将“whenbutton1_clicked”动作被激活。
- self.add(按钮1):如果我们希望我们的GTK构件出现,我们必须将它们添加到默认的窗口,这个简单的行添加“按钮1”到窗口,这是非常必要的做到这一点。
- 高清whenbutton1_clicked(自我,键):现在我们在这里定义“whenbutton1_clicked”行动,我们定义这是怎么回事在单击“Button1的”窗口小部件时,将发生“(自我,键)”参数是为了重要以指定信号父对象类型。
- 打印“你好,世界!”我没有在这里解释了。
- 窗口= ourwindow():我们要创建一个新的全局变量并将其设置为ourwindow()类,这样我们就可以在以后使用GTK 库调用它。
- window.connect(“删除事件”,Gtk.main_quit):现在我们连接的“Gtk.main_quit”操作“删除事件”的信号,这是重要的,以便删除所有的部件我们关闭后,我们的程序窗口。
- window.show_all():显示窗口。
- 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世界窗口
点击按钮,你会发现,“ 你好,世界 !”这句话就是终端打印。
现在让我们来解释一下新的东西:
- 类处理程序 :在这里,我们创建了一个名为“处理器”类,其中将包括采取的行动和信号的定义,我们创建的图形用户界面。
- 建设者= Gtk.Builder():我们创建了一个名为“建设者”,这是一个小部件Gtk.Builder一个新的全局变量,这是为了要导入的文件.glade重要。
- builder.add_from_file(“myprogram.glade”):在这里我们要导入的“myprogram.glade”文件,用它作为我们的程序默认的GUI。
- builder.connect_signals(处理程序()):该线路连接的处理程序类的.glade文件,让我们在“处理程序”级做工精细定义的动作和信号,当我们运行程序。
- ournewbutton = builder.get_object(“按钮1”):现在我们从.glade文件导入“按钮1”的对象,我们也把它传递给全局变量“ournewbutton”使用它以后在我们的节目。
- ournewbutton.set_label(“你好,世界!”):我们用“set.label”的方法为默认按钮文本设置为“你好,世界!”的句子。
- 窗口= builder.get_object(“窗口1”):在这里我们称之为从.glade文件中的“窗口1”的对象,以便在以后在节目中表现出来。
就是这样! 您已经在Linux下成功创建了第一个程序!