作为一个程序设计者,必须优先考虑用户的感受,一定要让用户感到舒适,程序才会被需要、被使用,这样的程序才有价值。
作为少年,肯定会对图形化的游戏特别感兴趣,因为我们从小到大接触了各种视觉游戏。所有这一节课我们介绍一下在Python中的游戏开发的一些基本知识,相信学完这几节课,我们就可以自己做一些简单而且有趣的游戏了。
首先介绍一下GUI,是 Graphics User Interface(图形用户界面)的缩写。在 GUI 中,并不只是输入文本和返回文本,用户可以看到窗口、按钮、文本框等组件,还可以通过鼠标和键盘操作应用,也就是我们我们的可视化窗口。
1.GUI常用库
GUI 是程序交互的一种不同的方式,使用 GUI 开发的程序,和命令行程序一样,都具有输入数据、处理数据和输出数据这 3 个基本要素,只不过,使用 GUI 开发的程序,它们的输入和输出方式更丰富,更有趣。
2.Tkinter开发模块
Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的。当然Tk并不是最新和最好的选择,也没有功能特别强大的GUI控件,事实上,开发GUI应用并不是Python最擅长的工作,如果真的需要使用Python开发GUI应用,wxPython、PyQt、PyGTK等模块都是不错的选择。这几节我们从最基本的讲起,就是Tkinter。
GUI 编程就相当于小孩子搭乐高,每个乐高块应该放在哪里,每个乐高块显示为多大,也就是对大小和位置都需要进行管理,而布局管理器正是负责管理各组件的大小和位置的。
3.布局
Tkinter 中,有 3 种布局管理器,分别为 pack、grid 和 place。本节先介绍 pack 布局管理器。使用 Pack 布局各个组件,当程序向容器中添加组件时,这些组件会依次向后排列,排列方向既可是水平的,也可是垂直的。
Tkinter 后来引入的 Grid 布局管理器不仅简单易用,而且管理组件也非常方便。
Grid 把组件空间分解成一个网格进行维护,即按照行、列的方式排列组件,组件位置由其所在的行号和列号决定,行号相同而列号不同的几个组件会被依次上下排列,列号相同而行号不同的几个组件会被依次左右排列。
4.实例:计算器布局设计
下面我们从布局来设计一个计算器,代码如下
rom tkinter import*class App:def__init__(self, master):self.master = masterself.initWidgets()definitWidgets(self):# 创建一个输入组件e =Entry(relief=SUNKEN, font=('Courier New',24), width=25)# 对该输入组件使用Pack布局,放在容器顶部e.pack(side=TOP, pady=10)p =Frame(self.master)p.pack(side=TOP)# 定义字符串的元组names =("0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","=")# 遍历字符串元组for i inrange(len(names)):# 创建Button,将Button放入p组件中b =Button(p, text=names[i], font=('Verdana',20), width=6)b.grid(row=i //4, column=i %4)root =Tk()root.title("Grid布局")App(root)root.mainloop()
运行程序之后: