0.引言

学Python这么久了,一直想做个界面出来,最近发现Python有个内置库tkinter,利用它可以很轻松做出一些简易的UI界面,首先来看Python官方对Tkinter的说明:

The tkinter package (“Tk interface”) is the standard Python interface to the Tk GUI toolkit. Both Tk and tkinter are available on most Unix platforms, as well as on Windows systems.

从上面描述中我们不难看出,不管你是 Mac OS 系统,还是 Windows 系统,它都可以生成相对应的操作界面,这就是所谓的跨平台。

1.调用关系说明

其原理就是我们使用 Python代码去调用 Tkinter, Tkinter 已经封装了访问TK的接口,这个接口是一个图形库,支持多跨平台操作系统,进而通过它,我们就可以调用我们系统本身的GUI接口了。

2.环境

操作系统:Windows / Linux / Mac OS

Python版本:3.6.6

3.小试牛刀

有了概念并了解原理之后,接下来就小试牛刀一下~

import tkinter as tk
import tkinter.messagebox as mbox # 定义MainUI类表示应用/窗口,继承Frame类
class MainUI(tk.Frame):
# Application构造函数,master为窗口的父控件
def __init__(self, master = None):
# 初始化Application的Frame部分
tk.Frame.__init__(self, master)
# 显示窗口,并使用grid布局
self.grid()
# 创建控件
self.createWidgets() # 创建控件
def createWidgets(self):
# 创建一个标签,输出要显示的内容
self.firstLabel = tk.Label(self,text="「人人都是Pythonista」专注Python领域,做最专业的Python星球。")
# 设定使用grid布局
self.firstLabel.grid()
# 创建一个按钮,用来触发answer方法
self.clickButton = tk.Button(self,text="点一下瞧瞧?",command=self.answer)
# 设定使用grid布局
self.clickButton.grid() def answer(self):
# 我们通过 messagebox 来显示一个提示框
mbox.showinfo("「人人都是Pythonista」",'''
这是一个专注Python的星球,我们提供「从零单排」、「实战项目」、「大航海」、「技术沙龙」、「技术分享」、「大厂内推」等系列供你选择及学习,当然也会有周边技术沿伸。
本星球会不定期开展各类实战项目,阶段性组织线上技术沙龙、分享等;对于职业发展路线不明确的,我们会邀请到一些大厂hr及高级开发、经理等给大家解惑。
加入我们,和千人一起玩Python,To be a Pythonista!
''') # 创建一个MainUI对象
app = MainUI()
# 设置窗口标题
app.master.title('「人人都是Pythonista」')
# 设置窗体大小
app.master.geometry('400x100')
# 主循环开始
app.mainloop()

在这里:

  1. 我们导入了 tkinter 的相关模块
  2. 定义了初始化函数,通过 grid() 方法将我们的组件传给父容器
  3. 自定义一个创建组件的方法,我们创建了一个标签和一个按钮,这个按钮被点击后就会触发 answer这个方法
  4. 我们通过 messagebox 来显示一个提示框
  5. 实例化我们的 APP,然后通过主线程来监听我们的界面操作

运行后如下:

5.总结

想要做出漂亮的UI界面,还是需要深入地学习下Tkinter这个模块。上文中的我们只用到了框架、按钮、标签、文本这四种控件,而在Tkinter中给我们提供了15种控件供大家使用。

此外Tkinter控件布局有三种方式:包装pack()、网格grid()、位置place(),本文中选用了grid,大家也可以逐一尝试下有什么区别,期待大家的大试牛刀~

关注公众号「Python专栏」,后台回复关键字:zsxq03,获取本文全部代码

Python又把GUI界面攻下了,今天就告诉你怎么玩的更多相关文章

  1. 用Python语言设计GUI界面

    我们大家都编写过程序,但是如果能够设计一个GUI界面,会使程序增添一个很大的亮点!今天就让我们来用目前十分流行的python语言写出一个最基本的GUI,为日后设计更加漂亮的GUI打下基础. 工具/原料 ...

  2. OpenCV-Python入门教程7-PyQt编写GUI界面

    前面一直都是使用命令行运行代码,不够人性化.这篇用Python编写一个GUI界面,使用PyQt5编写图像处理程序.包括:打开.关闭摄像头,捕获图片,读取本地图片,灰度化和Otsu自动阈值分割的功能. ...

  3. Python内建GUI模块Tkinter(一)

    Python主窗口 Python特定的GUI界面,是一个图像的窗口,tkinter是python自带的,可以编辑的GUI界面,我们可以用GUI实现很多一个直观的功能,如何想开发一个计算器,如果只是一个 ...

  4. 【Python】 用户图形界面GUI wxpython I 基本用法和组件

    wxpython - 基本用法和组件 wxpython是python对跨平台GUI库wxWidgets的封装.wxWidgets是由C++写成的. wxpython被包装进了wx模块中,用它设计GUI ...

  5. python实现的、带GUI界面电影票房数据可视化程序

    代码地址如下:http://www.demodashi.com/demo/14588.html 详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采 ...

  6. Python 实现的、带GUI界面的词云生成器

    代码地址如下:http://www.demodashi.com/demo/14233.html 详细说明: "词云"就是数据可视化的一种形式,给出一段文本,根据文本中词语的出现频率 ...

  7. 简单的Python GUI界面框架

    Python开发GUI界面, 可以使用pyQT或者wxpython. 不过不论pyQT还是wxpython都需要比较多的学习成本.Python工程往往是用于快速开发的,有些时候引入pyQT,wxpyt ...

  8. python实战GUI界面+mysql

    前言 前面用tkinter做了一个巨丑的GUI界面,今天想把它变漂亮起来,重新找回page做了一个界面,它也是基于tkinter开发的所见即所得的界面编辑器,前面因为代码搞不明白没用上,现在重新研究一 ...

  9. Windows下用python编写简单GUI程序的方法

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py #!C:\Python27\python.exe ...

随机推荐

  1. 《java与模式》阅读笔记02

    java语言的接口 在之前的编程作业中,我或多或少都用到了java的接口,但是接口的具体意思是什么,又该如何更好的使用呢?这个确实一知半解,带着这个问题我读了关于这些内容的章节. 所谓接口(inter ...

  2. 语义分割之Dual Attention Network for Scene Segmentation

    Dual Attention Network for Scene Segmentation 在本文中,我们通过 基于自我约束机制捕获丰富的上下文依赖关系来解决场景分割任务.       与之前通过多尺 ...

  3. 大数据OLAP引擎对比

    Presto:内存计算,mpp架构   PB级别数据 presto适合pb级的海量数据查询分析,不是说把pb的数据放进内存,比如一张pb表,查询count,vag这种有个特点,虽然数据很多,但是最终的 ...

  4. MySQL开发——【数据的基本操作】

    增加数据 基本语法: insert into 数据表 [字段名称1,字段名称2..] values (数据1,数据2...); 特别注意:针对数据类型整型.浮点型数据可以不加单引或双引号,但是如果字段 ...

  5. em,px,rem的区别

    px:IE无法调整px作为单位的字体大小. 是像素,是相对长度单位,是相对于显示器屏幕分辨率而言的. em:相对于当前对象内文本的字体尺寸.1em=16px: rem:在设置字体大小时,虽然仍然是相对 ...

  6. E: Sub-process /usr/bin/dpkg returned an error code

    E: Sub-process /usr/bin/dpkg returned an error code (1)错误解决 在用apt-get安装软件时出现了类似于install-info: No dir ...

  7. C#当中的扩展方法

    先说有用的,c#扩展方法结论: 扩展方法能够向现有类型“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型.扩展方法必须是静态方法,可以像实例方法一样进行调用.且调用同名中实际定义的 ...

  8. javascript常见内存泄露

    一.全局变量引起的内存泄漏 function func(){ lmw = 123456 //lmw是全局变量,不会被释放 } 二.闭包引起的内存泄漏 function func(){ var lmw ...

  9. ABP框架系列之三十八:(NHibernate-Integration-NHibernate-集成)

    ASP.NET Boilerplate can work with any O/RM framework. It has built-in integration with NHibernate. T ...

  10. s11 Docker+DevOps实战--过程和工具

    开发人员本地提交代码,本地使用容器模拟生产环境测试,测试通过提交到git master 分支,就会触发pipeline执行集成构建.集成工具: gitlab-vi,travis,或Jenkins.自动 ...