使用 PyQt 之前,必须确保你的计算机上已经安装有这个模块。如果你使用这本书的安装程序来安装 Python,就已经安装有 PyQt。不然,还得另外下载安装。PyQt 可以从 得到。要根据你的操作系统和所使用的 Python 版本得到正确的 PyQt 版本(如果运行这本书的安装程序,PyQt 的版本是 2.7.3)。我们这里使用 PyQt 4.1。
写一个 GUI 程序大体上可以分为两个主要部分。你需要创建用户界面本身(UI),然后编写代码让 UI 按照你的想法来实现功能。创建 UI 需要在窗口上排布一些东西,比如按钮、文本框、选择框等。然后你编写代码来响应按钮点击、文本框输入、选择框中选择某项等动作。
使用 Qt 时,可以使用 Qt Designer 来创建 UI。我们来看一下它的工作方式。
Qt Designer
当你安装完 PyQt 时,同时安装的还有 Qt Designer。找到它的图标(比如在 Windows 下到开始菜单中寻找),然后启动 Qt Designer。启动之后你应该可以看到 Qt 的窗口打开,中间有一个 New Form(新窗口)对话框:
Form 是 GUI 窗口对应的编程术语。因为你要创建一个新的 GUI 窗口,所以选择 Main Window(主窗口)选项,然后点击 Create(创建)按钮。现在我们来看一下 Qt 窗口的样子。
左边是组件列表,其中是能用于 GUI 的各种图形界面元素。它们被分为几个不同的分类。
术语箱
在 GUI 中,单个的按钮、复选框等都叫做“部件”(widget),也称为“组件”(component), 有时还称为“控件”(control)。
右边是对象检查器(Object Inspector)和属性编辑器(Property Editor),你可以在这里查看和修改组件的属性。除了对象检查器和属性编辑器,右边还有第三个面板,它的功能是由底部选中的标签决定的。它可以是 Signal/Slot 检查器、行为编辑器(Action Editor)或者资源浏览器(Resource Browser)。
中间是刚刚创建的空窗口。最顶上显示着 Main Window - untitled,是因为你还没有给它命名。中间的空白部分就是放置组件制作 UI 界面的地方。(在 Mac 上,需要在 Qt Designer > Preferences 中将 user interface mode(UI 模式)从 Multiple Top-Level Windows(浮动窗口)改为 Docked Window(集成窗口)才能看到这个界面。否则所有的面板都会浮动成独立的窗口。)
添加按钮
我们来为 GUI 添加一个按钮。在 Qt Designer 窗口的左边找到 Buttons(按钮),然后找到 Push Button 组件。
将 Push Button 拖到空白的窗口中,然后放在某个地方。现在窗口中有了一个按钮,它上面的文字是 PushButton。
现在注意看一下下边的属性编辑器。 如果按钮仍然处于选中态(周围有蓝色小方块),你会在属性编辑器中看到它的属性。可以看到按钮的名字是 PushButton。如果你在属性列表中向下滚动一下,还会看到其他的属性,比如宽度(width)、高度(height),以及 x 和 y 位置,等等。
修改按钮
要修改按钮的大小或者按钮在窗口中的位置,有两种方法:用鼠标拖动按钮,或者改变 Size
或 Position
属性。可以试着用这两种方法移动和调整按钮大小,看看它们的作用。要想使用鼠标移动按钮,点击按钮的任意部位然后拖动到新位置即可。要想使用鼠标改变按钮的大小,则点击按钮边缘的任一蓝色方块(称为操作点,handle),然后拖动按钮的某一边或者某一角来进行缩放。如果要使用属性来改变按钮的大小,则点击 geometry 属性旁边的小三角形,它就会展开,并显示出 X
、Y
、Width
和 Height
属性。输入不同的值即可移动或者调整按钮大小。
你还可以改变按钮上显示的文字。现在这个文字和按钮的名称是一样的,但这不是必须的。我们来改一下,让按钮上的文字变为 I/'m a Button!。在属性编辑器中,往下滚动,找到 text 属性,将它的值改为 I/'m Button!。你也可以在按钮上双击,然后直接编辑文字。
现在窗口中按钮上的文字已经变成了 I/'m a Button!,但该组件的名字(objectName
属性)仍然是 PushButton。如果你想在代码中操作按钮,则可以使用这个名字来指代该按钮。
保存 GUI
下面保存目前为止建立的 GUI。在 PyQt 中,所有 GUI 的描述都保存在一个 .ui 文件中。这个文件包含了窗口、菜单和部件的所有信息。Qt Designer 右侧的属性窗口中显示的正是同样的信息,现在我们需要把这些信息保存到一个文件中,以便 PyQt 程序运行时使用。
要保存 UI,进入 File 菜单,选择 Save As(另存为),为文件指定一个名字。下面把我们的 GUI 命名为 MyFirstGui。你会注意到,文件扩展名被自动设为了 .ui。所以这个 UI 会被保存为 MyFirstGui.ui。请确保将它保存在了你想要的文件夹中。默认情况下,Designer 会将它保存在软件本身所在的目录下,这可能不是你想要的结果。记得在点击 Save 之前先切换到你保存 Python 程序的文件夹。
可以在任何文本编辑器(包含 IDLE)中查看这个文件。如果打开这个文件,会看到这样的内容:
看起来让人有点糊涂,不过如果再仔细看看,可以看到描述窗口的部分、描述按钮的部分,以及还没有讨论的其他部分,比如菜单和状态栏。