利用tkinter制作一个用户界面(续)
导入:
我想作为一名Python程序猿,大家对于tkinter大家应该不陌生了吧,那么在接下几篇博文里我将跟大伙一起来实现tkinter的用户登录界面。注意:该界面没有注册哦~
tkinter的基础:
想要先实例化一个窗口我们就得学会以下代码:
import tkinter as tk
window = tk.Tk()
window.title("xxx")
window.geometry("300x500")#注意,引号中的窗口大小必须用"x",而不是“*”
window.mainloop()
运行了之后。。。
ohhhhhhhhhhh!没错,你完成了tkinter的第一步——学会了制作窗口!!!
messagebox模块的使用:
messagebox:信息框 那么以下就是一些有关于tkinter.messagebox模块的代码:
import tkinter.messagebox#先导入模块
tkinter.messagebox.showinfo(title = "Hi", message = "SHANe_HCKER")#显示信息
tkinter.messagebox.showwarning(title = "Hi", message = "nonononono")#显示警告
tkinter.messagebox.showerror(title = "Hi", message = "错错错")#显示错误
tkinter.messagebox.askquestion(title = "Hi", message = "字符串yes 还是 no")#询问
tkinter.messagebox.askyesno(title = "ask", message = "字符串 True 还是 False")#yes还是no
tkinter.messagebox.askretrycancel(title = "Hi", message = "字符串 True 还是 False")#重试还是取消
tkinter.messagebox.askokcancel(title = "ok", message = "字符串 True 还是 False")#ok还是取消
这里大家就不用运行了,因为运行啥都没用。但是这些再后面几章会很有用!!但是这些再后面几章会很有用!!但是这些再后面几章会很有用!!(重要的事情说三遍)
切入正题:
我们啊,这次需要用到上次的验证码模块,代码如下:
创建:YZM.py,并开始编译!!
import random
from PIL import Image, ImageFont, ImageDraw, ImageFilter
def rnd_tuple1():
a = random.randint(0,127)
b = random.randint(0,127)
c = random.randint(0,127)
return(a,b,c)
def rnd_tuple2():
a = random.randint(127,255)
b = random.randint(127,255)
c = random.randint(127,255)
return (a, b, c)
def rnd_char():
return chr(random.randint(97,122))
def YZM():
image = Image.new("RGB",(240,60),(0,255,0))
draw = ImageDraw.Draw(image)
for x in range(240):
for y in range(60):
draw.point((x,y),rnd_tuple1())
font = ImageFont.truetype("arial.ttf",36)
chr = ""
for t in range(4):
c = rnd_char()
chr += c
draw.text((60*t+10,10),c,rnd_tuple2(),font)
image.save("xxx.png")
return chr
这里输出的验证码图片是随机字母,并且是小写的,嗯。。。然后背景是由红绿蓝的小点点组成的,当然字母的颜色也随机。
运行后xxx.png会自动保存到你写的程序的目录,点开之后你会发现。。。
没错,随机刷新了验证码 针不戳
顺便来个预告,我们在下一章会直接发代码,其中我们呢,会用上这些模块
import tkinter as tk #tkinter模块
import tkinter.messagebox #messagebox模块
import webbrowser #浏览器模块
import time #时间模块
import os #系统模块1
import YZM #YZM.py的导入
tkinter 还有 messagebox都讲过了,接下来我们讲webbrowser, time 还有 os模块在我们这个界面里的使用:
webbrowser模块
打开标签页,用疯狂打开浏览器的方式冒充成"病毒"。。。用处很多,那么在我们的登录界面了,就有些好康的,比如:
import webbrowser
import tkinter.messagebox
while 1:
webbrowser.open("ihasabucket.com")
tk.messagebox.showerror(title = "输入有误 危险!!电脑处于危机状态!!", message = "错误,错误!!系统被匿名_067347不明用户劫持......")
运行后。。。
要是你看过之前的文章应该都知道的:好康的文章
time模块的使用:
在这里我们将讲到time模块在这个登录界面的用处也就是:
制作进度条!!
进度条的编译:
我们用下载进度条做个例子(需要用到time模块还有tkinter模块):
import tkinter as tk
import time
window = tk.Tk()
window.title('Installing')
window.geometry('630x150')
# 设置下载进度条
tk.Label(window, text='Installing', ).place(x=50, y=60)
canvas = tk.Canvas(window, width=465, height=22, bg="white")
canvas.place(x=110, y=60)
# 显示下载进度
# 填充进度条
fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="green")
x = 500 # 未知变量,可更改
n = 465 / x # 465是矩形填充满的次数
for i in range(x):
n = n + 465 / x
canvas.coords(fill_line, (0, 0, n, 60))
window.update()
time.sleep(0.01) # 控制进度条流动的速度
# 清空进度条
fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="white")
没错,就那么亿点点代码,那么运行之后会显示这样的东西:
运行成功,并且进度条也在流动,成功啦!
os模块的使用:
长得帅的人就会问了:欸,那个啥,os不是苹果电脑系统吗??
答:不。
问:你是傻了吗?
哈哈,其实啊,在我们的python当中,这个os其实是系统模块,用途有许多,其中我们需要用到的是这个:
import os
#os.system("在这里输入指令")
os.system("slidetoshutdown")
那么运行后,会发生惊人的一幕,可以截不到图。。。反正感兴趣的可以回头自己去试。
今天学会了那么多东西,回去一个一个都是界面制作小能手了,你说是不??