Tkinter教程系列01——引言和安装Tk
Tkinter教程系列01——引言和安装Tk
首发于我的个人博客 https://chens.life/tkinter-tutorial-chapter-01-introduction-and-install-tk.html
引言
这个教程针对于 Tkinter 的初学者而攥写,但也应该具有 Python 的基础知识。
此教程是我学习 Tk 的记录和总结,希望能够帮助到他人。
此教程针对 Tk 8.5或者更高版本,如果不是,请安装最新版。本教程使用 Python 进行演示,如果使用其他语言,Tk函数库的大部分都是相同的,详细区别请查找对应的文档。
本教程覆盖 95% 的在程序中会用到的基本内容,剩下的请自请查找参考文档。
什么是Tkinter
Tkinter是当前主流的,也是 Python 的标准图形化用户界面工具包。我们在初学 Python 的时候肯定都用过 IDLE,而这个小型的IDE就是用 Tkinter 开发出来的,足以见到它的方便和易用性(图1-1)。使用 Tk 可以编写实用的图形界面小程序,设计现代的图形界面。
安装 Tk
为 Windows 安装 Tk
自从 Python 3.1 之后,Tkinter 就被包括在 Python标准库中。你必须确保自己的 Python 版本支持 Tk 8.5 或者更高版本。本教程使用 Python 3.x。请在 Python 官网下载页面下载最新版 Python 。
验证是否安装正确
安装之后,需要验证 tkinter 版本是否正确。打开 cmd,输入 python
进入交互界面,并输入下面两行命令:
import tkinter
tkinter._test()
你将会看到一个小窗口,上面有 Tkinter 的版本信息。注意!你的 Tk 版本必须大于 8.5 或者更高(图1-2)。
或者,你可以输入以下命令直接的得到 Tcl/Tk 的版本(图1-3):
tkinter.Tcl().eval('info patchlevel')
为 GNU/Linux 安装 Tk
由于Linux不会自动的安装 Tk 和 ttk,所以需要手动的安装。安装有许多方式,这里仅提供一种最简单的方式。
使用 Linux 的包管理器进行安装
例如,如果你正在使用 Ubuntu 或者 Debian 系的 Linux 发行版,那么输入以下命令以安装 python3-tk
:
sudo apt-get install python3-tk
同样的道理也适用于 ReadHat 系。
验证是否安装正确
同 Windows 的验证一样,在 Python 的解释命令行中输入:
import tkinter
tkinter._test()
或者输入以下命令直接的得到版本信息:
tkinter.Tcl().eval('info patchlevel')
同样的,注意你的 tk 版本必须为 8.5 或者更高版本!
第一个 Tk 程序
为了确保所有的环境都已经设置正确,按照惯例,我们来使用 Tk 编写一个“Hello World!”程序。
使用你最拿手的编辑器敲下下面的代码即可,我们将在后续逐步讲解它们的作用。
from tkinter import *
from tkinter import ttk
root = Tk()
ttk.Button(root, text="Hello World!").grid()
root.mainloop()
将文件保存为“hello.py”,在命令提示符或者 Bash 中输入:
python hello.py
如果找不到文件,请查看当前是否在文件所在的目录之中,或者输入完整路径名。
如果执行正确,你将会看到如图所示的窗口(图1-4)。
Tkinter教程系列01——引言和安装Tk的更多相关文章
- Tkinter系列教程01—引言和安装Tk—Python GUI编程
目录 Tkinter教程系列01--引言和安装Tk 引言 什么是Tkinter 安装 Tk 为 Windows 安装 Tk 验证是否安装正确 为 GNU/Linux 安装 Tk 使用 Linux 的包 ...
- Tk 的基本概念-组件—Tkinter 教程系列03
Tk 的基本概念-组件-Tkinter 教程系列03 前言 Tk 系列教程: Tkinter教程系列01--引言和安装Tk Tkinter教程系列02--第一个真正的 GUI 程序 通过上一节的程序实 ...
- 第一个真正的 GUI 程序——Tkinter教程系列02
第一个真正的 GUI 程序--Tkinter教程系列02 前言 欢迎光临我的个人博客 chens.life Tk 系列教程: Tkinter教程系列01--引言和安装Tk 我们将编写一个英尺和米的转换 ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- 01 Flume系列(一)安装配置
01 Flume系列(一)安装配置 Flume(http://flume.apache.org/) is a distributed, reliable, and available service ...
- 【全网最全的博客美化系列教程】01.添加Github项目链接
全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...
- kubernetes系列(十七) - 通过helm安装dashboard详细教程
1. 前提条件 2. 配置https证书为secret 3. dashboard安装 3.1 helm拉取dashboard的chart 3.2 配置dashboard的chart包配置 3.3 he ...
- php从入门到放弃系列-01.php环境的搭建
php从入门到放弃系列-01.php环境的搭建 一.为什么要学习php 1.php语言适用于中小型网站的快速开发: 2.并且有非常成熟的开源框架,例如yii,thinkphp等: 3.几乎全部的CMS ...
- Silverlight,Windows 8应用开发实例教程系列汇总
Kevin Fan分享开发经验,记录开发点滴 Silverlight,Windows 8应用开发实例教程系列汇总 2012-06-18 01:05 by jv9, 2145 阅读, 3 评论, 收藏, ...
随机推荐
- ES-Next & ES7 @decorator
ES-Next & ES7 @decorator @decorator https://tc39.github.io/proposal-decorators/#sec-syntax https ...
- Angular 2020
Angular 2020 https://angular.io/start https://angular.io/guide/browser-support "@angular/core&q ...
- git in depth
git in depth git delete remote branch # Deleting remote branches in Git $ git push origin --delete f ...
- 破除区块链支付壁垒,NGK支付架构方案浮出水面
什么叫做区块链支付?区块链支付系统与传统支付系统有哪些不同?简要地说,原来传统的支付系统是有一个类似于银行的中间平台存在的,用户们的支付交易第一时间是寄存在平台,由平台核实验证交易行为之后,方才放行交 ...
- 大小厂必问Java后端面试题(含答案)
你好,我是yes. 这个系列的文章不会是背诵版,不是那种贴上标准答案,到时候照着答就行的面试题汇总. 我会用大白话尽量用解释性.理解性的语言来回答,但是肯定没有比平时通过一篇文章来讲解清晰,不过我尽量 ...
- (数据科学学习手札108)Python+Dash快速web应用开发——静态部件篇(上)
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- 教你吃透CSS的盒子模型(Box Model)
CSS 盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用. CSS盒模型本质上是一个盒子,封装周围的H ...
- 生产者和消费者问题(synchronized、Lock)
1.synchronized的生产者和消费者 synchronized是锁住对象 this.wait()释放了锁 并等待 this.notify()随机通知并唤醒同一个对象中的一个线程 this.no ...
- Guava-RateLimiter实现令牌桶控制接口限流方案
一.前言 对于一个应用系统来说,我们有时会遇到极限并发的情况,即有一个TPS/QPS阀值,如果超了阀值可能会导致服务器崩溃宕机,因此我们最好进行过载保护,防止大量请求涌入击垮系统.对服务接口进行限流可 ...
- Coposition 详解
LifeCycle Hooks 在新版的生命周期函数,可以按需导入到组件中,且只能在setup()函数中使用. import { onMounted, onUnmounted } from 'vue' ...