Python3——让我们像孩子一样的去看书

简介: 用tkinter来画高级图形 让我们一起创造一个按钮吧!“按住我:0  :” 那我们先做一个小例子,让我们第一眼先认识到这个它(tkinter)吧! 输入以下代码: 1 from tkinter import * 2 tk = Tk() 3 btn = Button(tk,text='按住我') 4 btn.

用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()类的对象,你就不能画画了哦!

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

btn = Button

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

btn.pack()

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

 

 

 

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

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

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

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

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)

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

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

 

Welcome to Python world! I have a contract in this world! How about you?
相关文章
|
安全 网络安全
入网安全评估第三方报告怎么出
入网安全评估是网络安全风险评估的一种,简单来说就是在信息系统在接入互联网之前进行网络安全风险评估,提前确定系统的网络安全漏洞情况,是否存在高中威胁,是否符合入网安全评估的测评标准以及网络安全等级保护测评的标准。
测试方案有点难?ChatGPT助你轻松编写测试方案!
使用ChatGPT辅助编写测试方案,以高级搜索功能为例,涉及关键词搜索、过滤条件、界面兼容性、错误处理等测试点。首先明确测试需求,如按作者、时间范围和分类搜索,产品形态为App和Web应用。然后,通过提示词逐步细化方案,包括App的移动设备适配、耗电量和内存占用测试。通过不断优化提示词,确保测试方案全面覆盖功能性能、用户体验及专项测试内容。
|
设计模式 UED
二十三种设计模式:解锁软件开发的神器:命令模式与撤销重做功能
二十三种设计模式:解锁软件开发的神器:命令模式与撤销重做功能
332 0
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
设置VSCode运行任务命令快捷键Alt+R,通常用于npm start(对频繁使用该命令可节省50%的输入命令行打字时间)
|
分布式计算 资源调度 大数据
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(二)
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(二)
286 0
Axure设计之多级菜单导航教程(中继器)
在数字化时代,优化产品设计,提升用户界面交互,是产品设计着重考虑的点。针对传统菜单导航复杂繁琐的问题,本设计提出了一套灵活的菜单导航方案,结合中继器与动态面板,实现一键搜索、菜单收藏、多级菜单导航、点击展开收缩等交互功能,旨在提升领导满意度,增强产品设计体验。
671 2
|
11月前
|
供应链 搜索推荐 数据可视化
《电商管理:精准营销与客户忠诚度培育》
本文概述了电商管理的重要性和关键领域,包括供应链管理、客户关系管理、数据管理和营销推广管理。文章指出,有效的电商管理能帮助企业应对激烈的市场竞争、多变的消费者需求和技术快速更新等挑战,实现高效运营和可持续发展。特别介绍了“板栗看板”这一创新工具,强调其在提升电商管理效率方面的显著作用。
《电商管理:精准营销与客户忠诚度培育》
|
存储 缓存 关系型数据库
智能辅助驾驶业务遭遇大表瓶颈,小鹏汽车如何破局?
小鹏汽车在智能辅助驾驶业务中遇到数据库性能挑战,如大表查询慢、频繁更新和存储空间快速膨胀。他们原使用的是社区版PostgreSQL,但随着数据量增长,性能瓶颈日益凸显。为了解决这些问题,小鹏汽车采用了阿里云的PolarDB-PG。 PolarDB-PG 的存储具备弹性扩容的能力,最大可支持 100 TB 存储空间。它的大表优化和弹性跨机并行查询(ePQ),成功解决了社区 PostgreSQL 针对大表的查询和并发更新慢的问题。在小鹏汽车的智能辅助驾驶业务上,实现了每日 TB 级大数据表的 7000 万行更新和大数据表秒级分析查询。
80716 2
|
JavaScript
Node.js GET/POST请求
10月更文挑战第6天
169 2
Node.js GET/POST请求
下一篇
oss云网关配置