前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Linux桌面下使用PyGObject创建GUI应用程序

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

作者头像
用户2323866
修改2021-06-18 10:54:12
3.7K0
修改2021-06-18 10:54:12
举报
文章被收录于专栏:技术派技术派

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

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

在Linux中创建GUI应用程序
在Linux中创建GUI应用程序

在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的一些书:

Dive Into Python
Dive Into Python
Python Testing: Beginner's Guide
Python Testing: Beginner's Guide
Making Games with Python & Pygame
Making Games with Python & Pygame
Invent Your Own Computer Games with Python
Invent Your Own Computer Games with 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脚本

Hello World脚本

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

测试Python脚本
测试Python脚本

测试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”。

Glade按钮属性
Glade按钮属性

按钮属性

Glade信号选项卡
Glade信号选项卡

信号选项卡

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

Glade导出Widget文件
Glade导出Widget文件

导出窗口小部件文件

现在,创建一个新的“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世界窗口
Hello世界窗口

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下成功创建了第一个程序!

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于Python
  • 关于GTK +
  • 在Linux下创建GUI应用程序
    • 代码唯一的方式
      • Glade设计师方式
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档