CC喵爱学习

  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

tkinter学习

发表于 2020-02-16 | 更新于 2020-02-19 | 分类于 软件
本文字数: 8.1k | 阅读时长 ≈ 14 分钟

更换pip源到国内镜像

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

tkinter打包exe

1.安装pyinstaller

pip install pyinstaller

若安装请跳过。

2.打包
window系统win+R打开cmd,
切换到需要打包的文件(koi.py)目录。cd C:\Project\pythonGUI>

执行
pyinstaller -F -w koi.py

-F 打包后生成一个exe,生成的exe在子目录dist中。
-w表示窗口,无控制台

3.更改exe图标

将图片转换为ico格式
http://www.bitbug.net/

pyinstaller -F -w -i koi.ico koi.py

koi.ico 需要与koi.py同一目录下,生成dist需要进行刷新

异常处理

什么是异常?

因为在程序执行时,异常报错提示可能会影响到输出结果的显示,此时就可以使用try:…except:…进行异常处理,将错误直接输出打印,而不是以报错的形式显示。

img

*args是什么鬼

来自:https://www.cnblogs.com/cwind/p/8996000.html

让我们通过以下5步来理解:

  1. 通过一个函数调用来理解’*’的作用
  2. 通过一个函数的定义来理解’*args’的含义
  3. 通过一个函数的调用来理解’**’的作用
  4. 通过一个函数的定义来解’**kwargs’的含义
  5. 通过一个应用实例来说明’args’,’kwargs’应用场景以及为何要使用它

通过一个函数调用来理解’*’的作用

定义一个含三个位置参数的函数”fun”.

1
2
3
>>> def fun(a,b,c):
... print a,b,c
...

传三个位置参数调用此函数

1
2
>>> fun(1,2,3)
1 2 3 #输出

可以看到出入三个位置参数调用此函数,会打印出三个参数

现在我们定义一个含三个整数的数列,并使用’*’

1
2
3
>>> l = [1,2,3]
>>> fun(*l)
1 2 3 #输出

‘*’ 做了什么?

它拆开数列’l’的数值作为位置参数,并吧这些位置参数传给函数’fun’来调用。

因此拆数列、传位置参数意味着fun(*l)与fun(1,2,3)是等效的,因为l = [1,2,3]。

试着数列中使用其他数值

1
2
3
>>> l = [4,8,0]
>>> fun(*l)
4 8 0 #输出

接下来我们试着在数列中放四个数值,调用函数会出现什么情况呢

1
2
3
4
5
>>> l = [3,6,9,1]
>>> fun(*l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fun() takes exactly 3 arguments (4 given)

在这次调用中我们并没有得到合适的结果,触发了TypeWrror异常。很容易看到错误内容”fun() takes exactly 3 arguments (4 given)”.

为什么会发生这种情况呢?

数列’l’含有四个数值.因此,我们试图调用’fun(l)’,’l’中数值拆开传给函数fun作为位置参数。但是,’l’中有四个数值,调用’fun(l)’相当于调用’fun(3,6,9,1)’,又因为函数’fun’定义中只用三个位置参数,因此我们得到这个错误。同理,同样的步骤,数列’l’中有两个数值情况,注意error内容。

1
2
3
4
5
>>> l = [7,4]
>>> fun(*l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fun() takes exactly 3 arguments (2 given)

‘*l’与位置参数混合使用

1
2
>>> fun(23, *l)
23 7 4

在这里,我们给出一个位置参数23,和从数列’l’拆除的两个数值7和4,因此三个参数23,7和4传给了函数’fun’

python中全局变量与局部变量

  • 局部变量就是定义在一个函数体内部的变量
  • 全局变量是定义在外面的变量

比如:

1
2
3
a = 1
def f():
b = 2

学习参考链接:

https://www.cnblogs.com/anita-harbour/tag/Tkinter/

https://blog.csdn.net/qq_28759809/article/details/103618183

捣鼓Nodemcu03-timer时间模块

发表于 2020-01-26 | 更新于 2020-01-27 | 分类于 电子
本文字数: 2.6k | 阅读时长 ≈ 4 分钟

delay

led=4

gpio.mode(led, gpio.OUTPUT)

while true do
gpio.write(led, gpio.HIGH)
tmr.delay(1000000)
gpio.write(led, gpio.LOW)
tmr.delay(1000000)
end

呼吸灯

pin=4
pwm.setup(pin, 500, 1000)
pwm.start(pin)

while true do
for i=0,1023,1 do
pwm.setduty(pin, i)
tmr.delay(1000)
tmr.wdclr()
end
for i=0,1023,1 do
pwm.setduty(pin, 1023-i)
tmr.delay(1000)
tmr.wdclr()
end

end

定时器

周期函数,也叫闹钟函数,参数说明如下
tmr.alarm(id, interval, repeat, function do())

id:
——number:0~6,一共可以设置7个周期函数
interval:
——number:定时的时间,单位为毫秒
repeat:
——0或1,1是重复函数,0是一次性函数
function:
——函数名:时间到了需要做的函数

1
2
3
4
5
6
7
8
9
i=0
tmr.alarm(0, 1000,1, function()

print(tmr.now())
if(i>=10)then
tmr.stop(0)
end
i=i+1
end)

捣鼓Nodemcu02_初识Lua

发表于 2020-01-26 | 更新于 2020-01-27 | 分类于 电子
本文字数: 7.4k | 阅读时长 ≈ 12 分钟

前言

如果已经有C语言基础的朋友,会发现Lua真的很简单。这里直接引用土神的笔记。原文链接:https://www.jianshu.com/p/5927eae240ba

注意的地方

部分与C语言不一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
不要在结尾使用                 ;
数组的第一个元素下标 是1不是0
----------------------------------------------------------------------
不等于 ~=
逻辑与 and
逻辑或 or
逻辑非 not
---------------------------------------------------------------------
注释用 --
空值 nil
连字符 ..
所有代码块需要结束标志 end
--------------------------------------------------------------------
不能使用 i++ i-- ++i --i

输出

依然是熟悉的

print(“XXX”)

1
2
3
4
print("hello world!")
----输出hello world!
print("5+3="..(5+3))
----输出5+3=8

if

if () then

end

1
2
3
4
5
i=6
if (i<7) then
print("yes!")
end
--输出yes!

if-else

if () then

else

end

1
2
3
4
5
6
7
i=9
if (i<5) then
print("yes!")
else
print("no!")
end
--输出no!

elseif

if () then

elseif () then

end

1
2
3
4
5
6
7
i=7
if (i<5) then
print("i<5")
elseif (i>6) then
print("i>6")
end
--输出i>6

while

while () do

end

1
2
3
4
5
6
7
8
9
10
11
i=5
while (i>0) do
print(i)
i=i-1
end
--输出
5
4
3
2
1

for循环

1
2
3
4
5
6
7
8
9
for i=1,5,1 do 
print(i)
end
--输出
1
2
3
4
5

捣鼓Nodemcu01_固件烧写

发表于 2020-01-25 | 更新于 2020-01-26 | 分类于 电子
本文字数: 2.6k | 阅读时长 ≈ 4 分钟

前言

春节假期,不能外出,武汉加油!

偶尔在B站刷到ESP8266的视频教程,这个模块在我们程序猿调教下已经用了很多,但是直接用普通模块还是没有亲身经历过。要和程序猿“和平”沟通,那自己还是得要多学习,跟上节奏才可以。

这里感谢B站UP主:土神121

这里学的教程都是跟着他的视频一步一步做下来,好记性不如烂笔头。

下载

链接:https://pan.baidu.com/s/1mdI6iD4J9bLlBvbdE7CX3g
提取码:l548

硬件

首先确认你的硬件是Nodemcu,我手上的的是CP2102版本,淘宝上还有便宜一些的是CH340,这两个版本都可以。

安装驱动

插上USB,如果你的电脑是完整版本,电脑会自动提示你安装CP2102或者CH340。如果电脑没有提示安装成功。那么你自己就需要自行安装驱动。土神的资料包中都已经包含了,对应安装即可。

烧写AT固件

烧写AT固件重置单片机里面的储存数据,避免当你使用lua语言编程的时候遇到奇葩的结果。

选择烧写软件

如果你用的和我一样的主控板,记得选择32M的版本(一般都是32M)

烧写完成后,打开AT调试软件

连接串口,点击板子上的Reset,发送AT,如果AT固件烧写正常,会返回一个OK

烧写NodeMCU固件

选择软件

点击Flash

速度比烧写AT快多了

安装Java环境

一般电脑都没有Java环境,而运行NodeMCU的编程软件是基于它的,需要提前安装。

运行NodeMCU软件

点击连接后,按下板子上的Reset按钮,返回对应的信息,即NodeMCU固件成功运行了。

谷歌成长01写好项目章程

发表于 2019-09-22 | 分类于 读书
本文字数: 401 | 阅读时长 ≈ 1 分钟

简介:

偶尔在一个公众号上看到推荐谷歌成长的小程序。看了下干货很多,有很多课程值得学习。

今天就开始第一篇——写好项目章程,跟我的工作息息相关。

写好项目章程是以一个收留猫而建大厦的故事进行展开,小程序中已经提炼得很简洁,这里我已思维导图的形式进行学习归纳。

思维导读

CCFIVE

CCFIVE

搭个技术博客用于监督自己进行学习~
5 日志
3 分类
6 标签
© 2020 true | 5k | 8 分钟
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v7.1.1
0%