tkinter学习

更换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

0%