Python图形用户界面和游戏开发

开始Python的复习!(以前学的忘了好多-_-)
主要参考的是Github上的一个项目:https://github.com/jackfrued/Python-100-Days
文章主要是对该项目中的内容进行学习 穿插一点自己的学习想法等内容~

基于tkinter模块的GUI

GUI是图形用户界面的缩写,Python默认的GUI开发模块是tkinter。从名字中可以看出他是基于Tk的,Tk是一个工具包,提供了跨平台的GUI组件。
事实上,开发GUI应用并不是Python最擅长的工作,如果真的需要使用Python开发GUI应用,wxPython、PyQt、PyGTK等模块都是不错的选择。

使用tkinter来开发GUI应用需要以下5个步骤:

  1. 导入tkinter模块中我们需要的东西
  2. 创建一个顶层窗口对象并用它来承载整个GUI应用
  3. 在顶层窗口欧对象上添加GUI组件
  4. 通过代码将这些GUI组件的功能组织起来
  5. 进入主事件循环
# !/usr/bin/env python
# 第一句话:配置解释器路径
# -*- coding:utf-8 -*-
# 第二句话:文件编码
import tkinter
import tkinter.messagebox


def main():
    flag = True

    # 修改标签上的文字
    def change_label_text():
        nonlocal flag
        flag = not flag
        color, msg = ('red', 'Hello, world') if flag else ('blue', 'Goodbye, world!')
        label.config(text=msg, fg=color)

    # 确认退出
    def confirm_to_quit():
        if tkinter.messagebox.askokcancel('温馨提示', '确定要退出吗?'):
            top.quit()

    # 创建顶层窗口
    top = tkinter.Tk()
    # 设置窗口大小
    top.geometry('240x160')
    # 设置窗口标题
    top.title('小游戏')
    # 创建标签对象并添加到顶层窗口
    label = tkinter.Label(top, text='Hello, world', font='Arial -32', fg='red')
    label.pack(expand=1)
    # 创建一个装按钮的容器
    panel = tkinter.Frame(top)
    # 创建按钮对象、指定添加到哪个容器中,通过command参数绑定事件回调函数
    button1 = tkinter.Button(panel, text='修改', command=change_label_text)
    button1.pack(side='left')
    button2 = tkinter.Button(panel, text='退出', command=confirm_to_quit)
    button2.pack(side='right')
    panel.pack(side='bottom')
    # 开启主事件循环
    tkinter.mainloop()


if __name__ == '__main__':
    main()

上述代码只是构建一个简单的按钮,实际上就是先构造画布、摆好UI设计,然后和对应的按钮事件连接起来。(期间设置大小、颜色等各种格式)

需要说明的是,GUI应用通常是事件驱动式的,之所以要进入主事件循环就是要监听鼠标、键盘等各种事件的发生并执行对应的代码对事件进行处理,因为事件会持续的发生,所以需要这样的一个循环一直运行着等待下一个事件的发生。另一方面,Tk为控件的摆放提供了三种布局管理器,通过布局管理器可以对控件进行定位,这三种布局管理器分别是:Placer(开发者提供控件的大小和摆放位置)、Packer(自动将控件填充到合适的位置)和Grid(基于网格坐标来摆放控件)

posted @ 2021-07-15 20:04  芋圆院长  阅读(113)  评论(0编辑  收藏  举报