本篇文章小编给大家分享一下Tkinter模块编写Python图形界面代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

一、为何使用Tkinter而非PyQt

众所周知,在Python中创建图形界面程序有很多种的选择,其中PyQt和wxPython都是很热门的模块包,这些第三方的图形界面模块功能强大、配置丰富,界面美观,是很多人的选择。

州的先生也经常使用PyQt5来为Python程序写上图形界面,以方便程序的使用。

而今天,我们要介绍的是Python内置的一个图形界面模块——tkinter。

在网络上有很多抱怨Tkinter模块的言论,比如:界面丑、不灵活、扩展功能差、模块少……等等,诚然,Tkinter确实有这些毛病或者说是缺点,但是它也并非是一无是处。

Tkinter最大的优势,在于其是Python的内置模块;仅仅是这一点,就可以带来很多优点。由于是内置模块,所以不需要进行额外的安装,这也就避免了很多刚刚接触的小伙伴可以顺利地开始import,而非各种pip安装失败或者是到处找各种版本可行的安装包(PyQt5就有很多这样的情况)。

同时,因为其内置模块的属性,使得其在程序打包为EXE或其他可执行文件的时候,打包出来的程序文件不会特别的大,这样对程序的传播还是很有用处的。

想一想,简简单单地写了一个小工具,结果打包出来的文件有几十兆之大,很是尴尬的。

介绍了那么多,下面,我们开始正式学习使用Tkinter编写Python图形界面程序。

二、创建一个基本的Tkinter程序

导入Tkinter模块

Tkinter模块的导入很简单,直接使用命令:

import tkinter

即可。

同时一般约定俗成其模块名简写为tk,所以导入命令为:

import tkinter as tk

实例化一个Tk类

所有的图形界面都有一个最顶级的容器,在PyQt5中有MainWindow、Widget等,而在Tkinter中,最常见最基础的则是Tk()类,当然在程序比较大或者图形窗口比较多的时候,使用Frame或Toplevel等容器部件会更加方便,但是在这里我们才刚刚使用Tkinter,所以就用Tk()类作为图形界面的最顶级容器:

import tkinter as tk

root = tk.Tk() # 实例化一个Tk()主窗口

设置窗口标题

上一步实例化了一个Tk()类并赋值给root变量之后,我们就拥有了一个TK窗口,接下来我们通过它的title()方法为窗口设置标题:

import tkinter as tk

root = tk.Tk()

root.title("第一个Tkinter程序")

这样,我们就将窗口的标题设置为了“第一个Tkinter程序”。

运行图形界面窗口

在创建了一个基本的窗口之后,我们如何将这个图形界面窗口运行起来呢?在PyQt5中我们可以使用窗口的show()方法来启动窗口主循环,而在Tkinter中,我们则可以使用窗口的mainloop()方法启动窗口的主循环,使得图形界面窗口运行起来:

import tkinter as tk

root = tk.Tk()

root.title("第一个Tkinter程序")

root.mainloop()

这样,我们创建的图形界面窗口将在Python文件被运行是出现。其效果如下图所示:

创建一个按钮

在上面,我们创建了一个只有一个窗口的图形界面,现在我们往里面再添加一些小部件,比如按钮;在Tkinter中,按钮为tk.Button()类,通过实例化这个类,我们能创建一个按钮部件:

import tkinter as tk # 引入tkinter模块

root = tk.Tk() # 实例化一个TK()类

btn = tk.Button(root,text='点我吧') # 实例化一个按钮类,父元素为root

btn.pack(padx=200,pady=50) # 设置按钮的大小

root.title('第一个Tkinter程序') # 设置图形界面标题

root.mainloop()

在这里,我们实例化了一个父类为root的Button()类,并且设置了按钮的文本。然后通过它的pack()方法设置的按钮的长度和宽度。继续运行程序,我们将会得到如下图所示的图形界面程序:

为按钮绑定一个命令

上面创建的图形界面包含了一个窗口和一个按钮,但是按钮放着有什么用呢?我们可以将它绑定到一个函数来,来实现点击事件的反馈。这在PyQt5中是一个很重要的概念——信号槽。而在Tkinter中也有类似的概念,在接下来的文章中,我们会逐步涉及到。

我们首先创建一个简单的函数,用于在控制台中打印一个字符串:

def tell_you():

print("州的先生Tkinter教程")

然后通过按钮的config()方法,为按钮配置一个命令:

import tkinter as tk # 引入tkinter模块

def tell_you():

print("州的先生Tkinter教程")

root = tk.Tk() # 实例化一个TK()类

btn = tk.Button(root,text='点我吧') # 实例化一个按钮类,父元素为root

btn.config(command=tell_you)

btn.pack(padx=200,pady=50) # 设置按钮的大小

root.title('第一个Tkinter程序') # 设置图形界面标题

root.mainloop()

这样,当我们点击按钮的时候,程序就会调用tell_you()函数,在控制台打印出“州的先生Tkinter教程”字符串,其效果如下图所示:

三、模块化Tkinter程序

在上面的程序中,我们所有的变量都是全局变量,无论是根窗口还是按钮小部件。这在程序很小的时候,或许没有问题,但是当我们添加的部件越来越多的时候,就很不方便维护了。基于此,我们可以使用面向对象的方法来重新组织我们的图形界面程序。以类和对象的方式作为图形界面窗口的组织单元。

import tkinter as tk

class MainWindows(tk.Tk):

def __init__(self):

super().__init__() # 初始化基类

self.title("第一个程序")

self.ini_ui()

def ini_ui(self):

self.btn = tk.Button(self,text='点我吧')

self.btn.pack(padx=200,pady=30)

self.btn.config(command=self.tell_you)

def tell_you(self):

print("州的先生Tkinter教程")

if __name__ == '__main__':

app = MainWindows()

app.mainloop()

现在,每一个变量都只限于MainWindows()内;这样,我们就将第一个Tkinter图形界面程序改造成了面对对象式。运行代码,也会得到和之前一样的图形界面程序:

编写一个python程序、输出如下图形效果_Tkinter模块编写Python图形界面代码实例...相关推荐

  1. 编写一个java程序 输出全部的希腊字母_编写一个Java应用程序,输出全部的希腊字母。...

    package 输出; public class App { public static void main(String args[]) { int s= 0, e= 0; char c= 'α', ...

  2. 编写一个C程序,运行时输出以下图形:

    编写一个C程序,运行时输出以下图形: **** **** ​ **** ​ **** 代码示例: #include <stdio.h>int main() {for (int i = 0; ...

  3. 九九乘法表python语言编程软件_编写Python程序,输出如下的九九乘法表_学小易找答案...

    [其它]写出下图的梯形图程序对应的语句表 (26.0分) [简答题]PLC一般的编程语言有几种?分别是什么? (5.0分) [其它]定义一个getMax函数,返回三个数(从键盘输入的整数)中的最大值. ...

  4. python hello world程序编写_用Python编写一个简单程序

    按照软件行业传统习惯,当你学习一种新的编程语言如Python时,首先编写一个"Hello World! "程序. 请执行以下步骤,以创造你的"Hello World!&q ...

  5. 在Linux环境下用C语言编写一个乘法程序mult,从命令行接收两个数字,然后输出其乘积;再用C语言编写一个exec1程序,在程序中使用execvp调用mult程序计算5与10的乘积。

    在Linux环境下用C语言编写一个乘法程序mult,从命令行接收两个数字,然后输出其乘积:再用C语言编写一个exec1程序,在程序中使用execvp调用mult程序计算5与10的乘积. 1.mult. ...

  6. C语言学习之编写一个C程序,运行时输人abc三个值,输出其中值最大者。

    编写一个C程序,运行时输人abc三个值,输出其中值最大者. #include <stdio.h> void main(){int a,b,c,max;printf("请输入三个数 ...

  7. 练习1-2:编写一个 JAVA 程序,实现输出考试成绩的前三名。

    1. 考试成绩已保存在数组 scores中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73 2. 要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传 ...

  8. 编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制

    题目要求: 编写一个C程序,实现以下功能: //编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101. //在main函数中输入整数n,调用函数 ...

  9. 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值。在main函数中输入一行字符串,分别调用两个函数,输出反序后的字符串。

    题目要求: 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值.在main函数中输入一行字符串,分别调用两个函数,输出反序后的 ...

最新文章

  1. mac中flutter配置
  2. 23万小鹏P7,到底够不够格PK国产特斯拉
  3. linux系统启动报错:[contains a file system with errors, check forced]的解决方法参考
  4. Ubuntu 19.10 19.04 18.04 18.10等系统版本修改国内镜像源 国内更新源
  5. asp.net web开发步骤_HTML5开发常见的7个框架,不可不知,收藏啦
  6. 文件存储的原理和记事本打开文件的原理
  7. 每日两SQL(7),欢迎交流~
  8. OpenGL:读取图片显示
  9. 【Spring] Spring boot 报错 Unable to start ServletWebServerApplicationContext due to missing ServletWe
  10. 一些常见的代码异味及解决之道
  11. python中pickle模块无法导入_python pickle模块
  12. 802.x无线认证服务器,无线802.1X认证
  13. csdn代码区的代码不变颜色?
  14. 计算机开机会跳过自检嘛,电脑开机怎样跳过自检
  15. 2339: [HNOI2011]卡农
  16. [ZGC升级记录](to-space exhausted/Evacuation Failure)
  17. android自定义通知栏样式,Android 通知栏自定义样式
  18. Win7计算机内存不足,请保存文件并关闭这些程序
  19. 【Jupyter Notebook】在jupyter中使用数学公式
  20. otg烧写linux内核,Linux——OTG方式烧写镜像文件步骤总结

热门文章

  1. 深入理解:为什么要使用工厂模式?
  2. 公积金和社保查询方法
  3. 全自动过滤器:应用生物膜法利用全自动过滤器降解有机物
  4. 基于android 10的国产手机,谁家系统更好用?基于Android深度定制的国产手机推荐...
  5. 对cgi、php-cgi、fast-cgi、php-fpm最最最最最通俗的理解
  6. python 数据离散化_数据离散化 - 等宽等频聚类离散 - Python代码
  7. 佳能 Canon *.CR3 檔案格式 外部資源
  8. Excel学习系列(2)--不能在隐藏工作薄中编辑宏
  9. Zoom会议无法使用本地电脑的图片作为虚拟背景的解决方法
  10. 11-高性能JSON库——fastjson2