用tkinter来画高级图形

让我们一起创造一个按钮吧!“按住我:0  :”

那我们先做一个小例子,让我们第一眼先认识到这个它(tkinter)吧!

输入以下代码:

  1. from tkinter import *
  2. tk = Tk()
  3. btn = Button(tk,text='按住我')
  4. btn.pack()

在第一行,我们看到了tk(我们叫他tiK)模块,用from模块名import *就可以不用模块的名字情况下使用模块的内容了!

按钮的下一行我们要使用Tk()这个类,所以我们创建了一个Tk类的对象变量tk = Tk(),tk对象的创建一个基本的窗口,我们可以在上面增加一些东西,比如按钮,输入框,或者画图的画布等。这个是tkinter模块最主要的类,没有Tk()类的对象,你就不能画画了哦!

在第三行,我们创建了一个按钮,是

  1. btn = Button

后面跟着两个参数,第一个就是tk的参数,第二个就是在这个按钮中加入提示。尽管我们将按钮加入到窗口中,但是不会显示出来,因为我们还需要一个

  1. btn.pack()

这样我们就显示出我们想到的东西了!look:

这个按钮“按住我”其实没有什么用,目前来看的话,就算你按了一天也不会有任何事情发生,除了你老妈叫你吃饭。或者我们改一些代码!(但是要关闭你创建的窗口昂!)

首先我们创建一个函数来吧!

  1. def hello():
  2. print ('Hi,我是窗口小君')

我们来调用这个函数让它显示出来来吧

  1. from tkinter import *
  2.  
  3. def hello():
  4. print ('Hi,我是窗口小君')
  5.  
  6. tk = Tk()
  7. btn = Button(tk,text='按住我', command = hello)
  8. btn.pack()

我在这个按钮按了5次,我们来看看效果吧:

在这里我们用了一个新的参数command,让Python在按钮点击时候调用了hello这个函数!

创建一个能画画的画布,来试一试!

我们做一个按钮虽然他能帮助你做一个开关的作用,但是我们要一步一步的走,不要去心急的去学习深入的东西,所以我们来创建一个画布,让我们的屏幕上画一些东西吧!如果是画图的话,我们需要一个不同的元素:一个canvas(画布)对象,也就是Canvas类的对象(也是由tkinter模块来提供)。

还是我们先来认识认识一下吧:

  1. from tkinter import *
  2. tk = Tk()
  3. canvas = Canvas(tk,width = 500,height=500)
  4. canvas.pack()

和按钮一样,第一行我们调用了tkinter的模块,我们用canvas.pack()将画布布置好,这会把窗口设置成宽500像素,高500像素,和第三行代码定义一样。

要在画布上画线,我们就需要用坐标元素,任何你想要控制鼠标来在屏幕上做出标记的话,就需要来使用坐标元素了!坐标,定义一个平面上像素的位置。在一个tkinter画布上,坐标决定了像素横向(从左到右)的距离,以及纵向(从上到下)的距离!

我们要画出这样的一个就需要用到create_line函数来指定我们的坐标,因为我们的画布是500像素宽,500像素高,那么屏幕右下角的坐标就是(500,500)起始点坐标就是(0,0)

实现我们的坐标如下:

  1. from tkinter import *
  2. tk = Tk()
  3. canvas = Canvas(tk,width = 500,height=500)
  4. canvas.pack()
  5. canvas.create_line(0,0,500,500)

我们在接触一些函数,一起来看看这些函数的作用:

画盒子的:create_rectangle

  1. from tkinter import *
  2. tk = Tk()
  3. canvas = Canvas(tk,width = 500,height=500)
  4. canvas.pack()
  5. canvas.create_rectangle(20,20,250,250)

我们看到的效果:

我们画出一个形状就可以画出很多的矩形,我们都看过三维的管道,所以我们来试一试吧!

如果想要填满画布的话,我们可以引用random随机数模块,这个模块我们要用到randrange函数,这个函数就像我们2中的range函数。

  1. def random_rectangle(width,height):
  2. x1 = random.randrange(width)
  3. y1 = random.randrange(height)
  4. x2 = x1 + random.randrange(width)
  5. y2 = y1 +random.randrange(height)
  6. canvas.create_rectangle(x1,y1,x2,y2)

我们向定义一个函数它有两个参数宽(width)和高(height),然后我们用randrange这个函数来建立两个代表矩形左上角的变量,分别是使用总宽度和高度

x1 = random.randrange(width)
y1 = random.randrange(height)

对于这二、三行来讲就是建立变量x1,设定它的值从0到参数width之间的一个随机数。

接下来的两行为矩形的右下角创建变量,并却考虑左上角的坐标(x1和y1),四、五行就是创建一个x2,它是计算的是得到的x1加上一个随机数。

最后我们用变量x1,x2,y1,y2来调用canvas.create_rectangle画布上画的矩形。但是画出来的只是一个小矩形,你还需要让它铺满屏幕。所以还需要一个循环;

  1. for x in range(0,100):
  2. random_rectangle(300,300)

运行一下吧,我们看到的会是一个具有艺术感的图形了!

是不是很有艺术感!!!!今天就写道这里,主要是手机没电了!哈哈!

Python3——让我们像孩子一样的去看书的更多相关文章

  1. EIGRP认证 配置 (仅仅是命令 原理自己去看书) 转自:http://blog.163.com/s_u/blog/static/13308367201111771831631/

    EIGRP认证 目的:掌握EIGRP的MD5认证 拓扑:这里IP配置我就不写出来了,应该对大家来说是非常简单的事了,就要细心一点就可以了.首先我们在R1上启用MD5认证R1(config)#key c ...

  2. 擦亮自己的眼睛去看SQLServer之简单Insert(转)

    摘要:本来是打算先写SQLServer历史的,不过感觉写那部分内容比较难还需要多查些资料.于是调整了下顺序写下简单的Insert语句. 不过感觉写那部分内容比较难还需要多查些资料.于是调整了下顺序写下 ...

  3. h5 plus/h5+规范使用,模块索引,教你如何去看h5+的手册

    最近看了下h5+规范的官网,开始觉得晦涩难懂,确实很乱,不过这也是基于我不理解的情况,终于艰难读完了,现在来分享下心得吧,基本看完文章,按我的方法,应该可以直接上手项目. 我准备的工具 hbuilde ...

  4. 我追一个处女座的女孩快两个月了,我之前聊得很好,她说过有空call我去看电影,过了一个月她就不理我了,我喜欢她, 我是程序员,百度发不了那么多字。

    她刚刚进公司的时候,公司组织去打球,我叫她一起去她也去了,我和她聊了很多,聊得很自然,很开心,如我是哪个学习毕业的 我出来工作多久了等,她也聊了 她自己好多,她现在在读大学,只有周日上一天课那种. 我 ...

  5. Codevs 1570 去看电影

    1570 去看电影  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 农夫约翰带着他的一些奶牛去看 ...

  6. codevs——1570 去看电影

    1570 去看电影  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 农夫约翰带着他的一些奶牛去看电影.而他的 ...

  7. Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)

    Hive总结(七)Hive四种数据导入方式 (强烈建议去看) Hive几种数据导出方式 https://www.iteblog.com/archives/955 (强烈建议去看) 把MySQL里的数据 ...

  8. thinkphp中view页面中的volist标签转化为原生php分析(多去看源代码,你会发现不仅简单,方便你理解,还节约时间)

    thinkphp中view页面中的volist标签转化为原生php分析(多去看源代码,你会发现不仅简单,方便你理解,还节约时间) 一.总结 1.标签和原生php之间的关系:标签只是为了方便你使用,标签 ...

  9. (转)beanUtil接口和类(有空的时候去看,到时候删除这个说明)

    Jakarta Commons项目提供了相当丰富的API,我们之前了解到的Commons Lang只是众多API的比较核心的一小部分而已.Commons下面还有相当数量的子项目,用于解决各种各样不同方 ...

随机推荐

  1. Struts配置详解

    一.Stuts的元素 1 web.xml 任何一个web应用程序都是基于请求响应模式进行构建的,所以无论采用哪种MVC框架,都离不开web.xml文件的配置.换句话说,web.xml并不是Struts ...

  2. 理解spread运算符与rest参数

    理解spread运算符与rest参数 spread运算符与rest参数 是ES6的新语法.它们的作用是什么?能做什么事情? 1. rest运算符用于获取函数调用时传入的参数. function tes ...

  3. 如何优雅地在React项目中使用Redux

    前言 或许你当前的项目还没有到应用Redux的程度,但提前了解一下也没有坏处,本文不会安利大家使用Redux 概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与 ...

  4. 配置程序成为Linux服务

    最近写了个程序需要随Linux启动时自动运行起来, 查了一些方法后, 通过配置程序成为系统的服务实现了这个需求, 在此记录一下. 测试程序 #! /bin/sh while [ true ] do e ...

  5. Python 爬虫实战(一):使用 requests 和 BeautifulSoup

    Python 基础 我之前写的<Python 3 极简教程.pdf>,适合有点编程基础的快速入门,通过该系列文章学习,能够独立完成接口的编写,写写小东西没问题. requests requ ...

  6. python模拟shell执行脚本

    工作时候需要模拟shell来执行任务,借助包paramkio import paramiko class ShellExec(object): host = '127.0.0.1' port = 36 ...

  7. Android破解学习之路(五)——Android游戏 割绳子:魔法 + 在游戏加入Toast弹窗提示

    前言:这一期的破解教程,有新的知识内容出现啦! 这一期破解的游戏是找不到之前的关键字,怎么破解呢? 破解成功之后,添加一个Toast弹窗提示由XX破解,这操作该如何实现呢?请往下看~ 链接: http ...

  8. ArcGIS 网络分析[8] ArcObjects二次开发之底层网络分析开发

    基于现有的线要素类.转弯要素类(在地理数据库的要素数据集中),要用AO做两件事: 1. 创建网络数据集(使用Geodatabase类库) 2. 执行网络分析(使用NetworkAnalyst类库) 在 ...

  9. STM32基础分析——USART的DMA模式

    有关USART的DMA传输模式,其基本的概念和配置,网上有很多博客和教程都有,这里不再赘述,只是记录一下比较容易忽视而造成调试不通的问题. 1. 串口发送和接收分属两个DMA通道 一般方式操作串口时, ...

  10. 微信JS-SDK使用步骤(以微信扫一扫为例)

    概述: 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用 ...