1 min read

python3.5使用tkinter简记

版本:python3.5 环境:WIN7_64

记了下最近用到的代码,新手入门,不足之处欢迎指出~

#===================================主窗口创建控件的代码

from tkinter import *    #python3.5用小写的tkinter
from PIL import Image, ImageTk    #操作图片用

root=Tk();
root.title("程序标题")    #窗口标题
root['width']=650;root['height']=320  #窗口宽度高度  
root.resizable(False, False)	#禁止缩放,最多最小按钮灰色,禁止边缘拉伸。
                            #比网上找的root.minsize和root.maxsize好使~

 #下面是3个按钮,用的palce布局方式。用网页习惯了坐标。                            
Button(root,text="按钮1",width=20,command=button1).place(x=30,y=30)  
Button(root,text="按钮2",width=10,command=button2).place(x=180,y=30) 
Button(root,text="按钮3",width=15,command=button3).place(x=260,y=30)   
 
 #当程序里需要调用控件的时候。用下面的方法创建空间。程序里调用text_box,下面有调用示例
text_box = Text(root,width=49,height=16)
text_box.place(x=30,y=80)

 #这是没什么好说的。同上。显示几个字
Label(root,text="↓↓ 二维码 ↓↓",width=12).place(x=460,y=30)

 #这里是用LABEL显示图片。需要模块:from PIL import Image, ImageTk
img = Image.open("none.jpg")       #none.jpg是默认二维码图片
photo = ImageTk.PhotoImage(img)
qrcode_box = Label(root,width=210,height=210,image=photo)   
                         #这里的WIDTH和HEIGHT不是按像素,很坑爹,只能自己一点试
qrcode_box.place(x=400,y=80)

root.mainloop()      #消息循环什么的。反正结尾就这句

#===================================这里是主窗口创建控件的代码结束

生成二维码的函数。用到上面的qrcode_box 函数用到的模块:import qrcode,import base64

 def er_wei_ma():
    str1 = 'rc4-md5:password@'+vps_ip+':443'      #这串代码。你懂得~~ 
    new_str = 'ss://'+base64.b64encode(bytes(str1, "utf-8")).decode()   #BASE64编码
    img = qrcode.make(str(new_str))         #生成二维码图片
    img = img.resize((250, 250), Image.ANTIALIAS)     #修改图片大小
    photo = ImageTk.PhotoImage(img)            #转换成控件用的图片格式          
    qrcode_box.configure(image = photo)        #这里调用了上面声明的qrcode_box控件
    qrcode_box.image = photo            #看上去感觉和上面的语句重复了,然而不加不行

输出内容的函数。用到上面的text_box

 #输出显示到TEXT框
def show_txt(str1):
    text_box.insert(INSERT, str1)
    text_box.update()     #更新控件
 #清空txt
def clear_txt():
    text_box.delete('1.0',END)
    text_box.update()     #更新控件
	
 #.update()加了以后。才能实时的显示输出。要不然程序卡到结束才会一次显示出来。虽然程序还是阻塞的,但是至少有了命令行的感觉    	

======================================最后====================================== 记一个错误吧,还没解决,写的这个小程序想用pyinstaller3.2生成EXE失败。 之前没加tkinter之前还能生成的,加了之后貌似就有问题了,错误也不明确。 错误代码大概如下:

....前面的省略...
19456 INFO: Building PKG because out00-PKG.toc is non existent
19458 INFO: Building PKG (CArchive) out00-PKG.pkg
Traceback (most recent call last):
  File "c:\python35\lib\runpy.py", line 170, in _run_module_as_main
........
中间也省略
.........
  File "c:\python35\lib\site-packages\PyInstaller\building\utils.py", line 521, in _load_code
    assert loader and hasattr(loader, 'get_code')
AssertionError

查了一上午谷歌无果。就找到一个类似的。看错误代码是完全一样。看她好象是用了最新的DEV版本才成功,我懒得折腾,就等下一个版本了。

和我一样错误的帖子:
https://github.com/pyinstaller/pyinstaller/issues/2017