Quickly 入门

作者:Jono Bacon

使 Linux 作为操作系统蓬勃发展的核心是应用程序。其中包含种类繁多、充满活力的应用程序,即使是最特殊的需求也能满足,而且只需点击几下即可获得。凭借如此富有想象力的应用程序范围,也形成了一个同样充满活力的开发者社区,配备了大量的工具、语言和功能。不幸的是,虽然这些工具功能强大,但其中许多工具都非常复杂,许多开发人员的想法和创造力都被埋没在关于这些工具如何组合在一起的困惑之中。

造成这个问题的部分原因是,许多开发工具只迎合系统化的开发人员——那种为生计而编程的代码狂人,他们狂热地关注细节,并以单元测试和其他专业程序员的标志为后盾。然而,还有另一种开发人员,他们受编写实用代码的驱动,解决自己的痛点,并乐于编写程序并与他人分享。这些是机会主义的开发者。

作为我们在 Ubuntu 中工作的一部分,我们一直热衷于利用机会主义的开发者,并使他们能够使用 Ubuntu 作为平台来完成伟大的工作。作为这一目标的一部分,我们开发了一系列工具,使您可以轻松打破想法和实现之间的障碍,并帮助您更快速、更轻松地解决您的痛点。 Quickly (wiki.ubuntu.com/Quickly) 就是这样一种工具。

进入 Quickly

Quickly 可以让您快速启动并运行(当然是快速地)从头开始编写应用程序。传统上,编写桌面应用程序需要进行大量繁琐的操作,包括构建系统、源代码控制、打包框架、图形界面工具和其他妨碍编写代码的东西。 Quickly 是一种简化这些不同事物如何组合在一起的工具。

Quickly 提供了一个框架,其中包含一系列用于创建不同类型应用程序的模板。对于每个模板,都会对创建该应用程序所涉及的工具做出一些独断专行的决定。到目前为止,最受欢迎的模板,也是 Quickly 本身创建来满足的模板是 Ubuntu 模板。此模板使用了一套工具,这些工具在现代桌面软件开发中已变得非常流行,并且是我们已在 Ubuntu 中利用的工具。它们是

  • Python:一种简单、易学、灵活高效的高级语言。

  • GTK:一个用于创建应用程序的全面而强大的图形工具包,也是 GNOME 桌面环境的基础。

  • GNOME:Ubuntu 附带的桌面环境,提供许多集成功能。

  • Glade:一个用于快速轻松地创建用户界面的应用程序,然后可以将其直接加载到您的 Python 程序中。

  • GStreamer:一个功能强大但非常简单的框架,用于回放和创建音频、视频和其他多媒体内容。

  • DesktopCouch:一个用于在数据库中保存内容的框架,该数据库快速高效,可以巧妙地连接到 Ubuntu One,并且非常适合复制。

  • gedit:用于编辑代码——Quickly 假设您将使用 Ubuntu 附带的文本编辑器,该编辑器提供了一个简单且出奇灵活的界面来编写程序。

有了这套核心工具,您可以编写任何您能想象到的应用程序,并且知道它将在 Ubuntu 和其他发行版上轻松运行。让我们让奇迹发生吧。

获取 Quickly

如今,Quickly 主要在 Ubuntu 上使用,目前尚未为其他发行版打包,尽管我们希望这种情况在未来会发生变化,并且其他发行版也会使用 Quickly。如果您正在运行 Ubuntu,那么获取 Quickly 非常简单,只需从 Ubuntu 软件中心安装,或者启动终端并运行

sudo apt-get install quickly

几分钟后,您应该就可以启动并运行了。

创建项目

在安装并准备好 Quickly 后,让我们开始创建一个简单的应用程序。使用“应用程序”→“附件”→“终端”启动终端,然后输入以下命令

quickly create ubuntu-project myapp

此命令使用 Quickly 创建一个名为 myapp 的新 Ubuntu 项目。当 Quickly 生成新项目并将其各种文件保存在名为 myapp 的新目录中时,您会看到一连串的行从眼前飞过。当 Quickly 完成生成项目后,它会自动运行它,您应该会看到一个窗口,该窗口看起来与图 1 非常相似。

Getting Started with Quickly

图 1. Myapp 主窗口

生成的应用程序具有许多应用程序通用的重要元素,例如菜单栏、菜单项和状态栏,并且还包括带有某些文本的标签和一个非常漂亮的 Ubuntu 朋友之环图像。随意点击菜单并试用您的新程序。它现在还不能做太多事情,但从这个预先存在的基础开始,您现在可以将其变成您想要的任何程序。让我们开始处理它。首先,进入项目目录

cd myapp/

Quickly 有一系列以quickly命令开头的命令。您需要知道的第一个命令是如何运行您的程序。只需使用 run 命令

quickly run

这将运行您的程序并将其显示在屏幕上。当您完成程序后,您可以通过单击窗口关闭按钮或在终端内按 Ctrl-C 来关闭它。

现在,让我们创建一个非常简单的程序,演示如何使用 Quickly 及其关键组件:Python 和 GTK 小部件集进行基本开发。为此,该程序将有一个文本输入框,当您在其中键入一个单词时,它将在 Google 上搜索该单词。虽然非常简单,但它很好地演示了基础知识,并且是一个很好的起点。

更改程序的界面

在每个程序中,您都可以使用按钮、滚动条和其他交互式元素进行点击,以构建您的程序界面。这些用于创建界面的构建块称为小部件,它们是 GTK 工具包的一部分。

首先,让我们对用户界面进行一些更改,以删除一些不需要的小部件。您还需要添加一个文本框小部件。要编辑您的用户界面,请使用名为 Glade 的程序,该程序允许您通过指向和单击来直观地构建您的界面。稍后,您可以将不同的小部件连接到执行有趣操作的代码。首先,使用以下命令加载 Glade

quickly glade

当 Glade 弹出时,它应该看起来与图 2 非常相似。(注意:在 Quickly 0.4 中,命令是quickly design.)

Getting Started with Quickly

图 2. Glade

Glade 的界面包含几个组件。在中间,您可以看到您当前正在处理的界面。在那里,您可以单击小部件以突出显示它们、移动它们、删除它们等等。主 Glade 界面左侧的图标集合称为工具调色板,它提供了您可以在应用程序中使用的各种小部件。只需单击一个小部件,然后在您的应用程序窗口中单击即可添加它。

在 Glade 界面的右侧是两个主要区域。在顶部,您可以看到小部件层次结构。这表明小部件是其他小部件的一部分。许多小部件充当其他小部件的容器。例如,按钮通常在其上有一个带有某些文本的标签,并且标签 (gtk.Label) 位于按钮 (gtk.Button) 内。

在小部件层次结构下方是一系列选项卡,它们都反映了当前选定小部件的设置。例如,如果您在 Glade 中的应用程序界面中单击朋友之环图像(Ubuntu 徽标),您可以看到小部件设置区域的内容调整为显示 GTK 图像小部件的可用设置。如果您单击图像上方的文本(称为 GTK 标签),您也会看到设置反映该小部件。

现在,让我们调整界面以反映这个简单的应用程序。单击标签后,查看主 Glade 窗口右侧的小部件设置,找到标签选项,更改显示的文本。在其中,删除现有文本,然后输入以下文本:“在下方输入搜索词:”。您应该会看到用户界面中的标签发生变化。

完成标签后,您真的不需要朋友之环图像了,因此单击它并按删除键。删除图像后,您将看到其后面打开一个灰色空间。这是您可以在其中放置另一个小部件的界面的空白部分。这也相当方便,因为您希望用文本输入小部件填充此空间,用户可以在其中键入他们的搜索词。

要添加小部件,请使用主 Glade 界面窗口左侧的工具调色板区域。在“控件和显示”部分中,将鼠标悬停在图标上,直到找到“文本输入”项(通常,它是左侧第三个图标)。单击它,然后在删除图像时打开的灰色空间中单击。您现在应该看到文本输入出现,并且您的用户界面应该如图 3 所示。

Getting Started with Quickly

图 3. 文本输入

有了小部件后,您应该命名它。您代码中的所有小部件都可以被引用,并且您经常会使用此名称来引用它们。为此,请转到 Glade 界面右侧的小部件设置区域,然后在“名称”选项中,输入“search_box”作为名称。您可以随意调用小部件,但我通常指它所做的事情(例如,搜索),然后使用下划线并添加小部件的描述(例如,“box”表示文本框)。这使得在阅读代码时很容易确定小部件的作用。

将点击连接到代码

在继续之前,让我们暂时从工具中休息一下,讨论图形程序如何工作的关键方面——一种称为事件驱动编程的技术。这是一个相当简单的想法。当用户与程序中的一个小部件交互时,它将触发您想要的行为。例如,在此示例程序中,您希望用户在文本框中输入搜索词,当他们按下 Enter 键时,程序将在 Web 浏览器中搜索该词。

当您以某种方式与小部件交互时,它会生成一个信号来指示您对小部件所做的操作。在这种情况下,您正在与文本框小部件交互,并且有各种信号用于不同的交互方式,例如将文本复制到剪贴板、将文本粘贴到其中、使用箭头键移动光标、键入字母等等。此示例应用程序专门用于在用户按下 Enter 键时搜索 Google(按下 Enter 键通常表示他们已完成键入),因此现在是触发所需行为的好时机。

这种工作方式是您将使用 Glade 来指定您希望在程序代码中调用哪个处理程序来响应特定信号的生成。在这种情况下,当您按下 Enter 键时生成的信号称为activated,您很快将在代码中创建一个名为 search_for_term 的处理程序来响应信号。

要建立此连接,请确保文本框当前在 Glade 中突出显示,并在小部件设置中,单击“信号”选项卡。在那里,您将在“信号”列中看到信号列表。现在,单击激活信号右侧的空间,然后在“处理程序”列中,输入“search_for_term”作为您的处理程序。现在,单击“文件”→“保存”以在 Glade 中保存您的工作。

编写一些代码

用户界面完成后,现在让我们编写执行搜索的 search_for_term 处理程序。要编辑您的程序代码,只需在终端中使用 edit 命令

quickly edit

这将在默认的 Ubuntu 文本编辑器 gedit 中启动项目中的每个源文件。将加载许多不同的源文件,但大部分操作发生在 myapp 文件中。这是在您运行时执行的主 Python 程序quickly run.

您需要编写的代码来获取输入到搜索框中的词条并使用它搜索 Google 非常简单,您可以使用 webbrowser Python 模块来帮助您。在 myapp 文件中,在import gtk行之后添加import webbrowser.

这会导入 webbrowser Python 模块,该模块会将 URL 加载到系统的默认 Web 浏览器中。

现在,向下滚动,并在on_destroy处理程序之后,在gtk.main_quit()行之后添加以下内容

def search_for_term(self, widget, data=None):
    """Search for the term entered"""

    searchurl  = "http://www.google.com/#hl=en&source=hp&q="
    searchterm = searchurl + widget.get_text()
    webbrowser.open_new_tab(searchterm)

在这里,您添加了 search_for_term 处理程序,它有三个传递给它的参数

  • self:所有类方法都传递 self,这是正常的 Python。

  • widget:这是对调用处理程序的小部件的引用。您可以使用它从文本输入小部件获取信息。

  • data=None:当您调用处理程序时,您可以根据需要向其传递其他数据,但您可以忽略此示例。

当此处理程序运行时,首先通过连接“http://www.google.com/#hl=en&source=hp&q=”和输入到搜索框中的内容来构造最终搜索词。要获取此内容,请使用自动传递给处理程序的小部件。这是对文本输入小部件的引用,可用于运行作为 gtk.Entry 文本输入小部件一部分的任何方法。一个可用的方法是 get_text(),它只是返回输入的文本。因此,将其与 Google URL 连接起来,您现在就拥有了一个完整的 URL,您可以将其传递给 Web 浏览器。例如,如果您输入“chickens”,则完整 URL 将为“http://www.google.com/#hl=en&source=hp&q=chickens”。

要将 URL 传递给浏览器,请使用 webbrowser 模块及其 open_new_tab() 方法,该方法会使用您传递给它的 URL 打开一个新选项卡。

代码完成后,让我们运行它以仔细检查一切是否正常

quickly run

您现在应该看到类似于图 4 的内容,您可以在其中键入一些文本,按 Enter 键,然后在浏览器中查看结果。如果您在终端中看到一些错误,请务必仔细检查您是否正确键入了所有内容。

Getting Started with Quickly

图 4. Myapp 主要运行

Quickly 是一个用于生成应用程序的极其简单且功能强大的工具,我几乎没有触及它可能实现的功能的表面。您可以通过访问 wiki.ubuntu.com/Quickly 了解有关使用 Quickly 的更多信息。

Jono Bacon 是 Canonical 的 Ubuntu 社区经理,《社区的艺术》的作者,该书由 O'Reilly 出版,社区领导力峰会的创始人,以及 Shot Of JaqFLOSSWeekly 的联合主持人。

加载 Disqus 评论