Python3.7的tkinter说明书!还送你一套本地登录软件!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/tiantian520ttjs/article/details/102755663

什么是tkinter?

tkinter,就是窗口。使用Python3.7里的“tkinter”模块,就可以“召唤”窗口。

import tkinter as tk
import tkinter.messagebox
import pickle
import pickle
import tkinter as tk
import tkinter.messagebox
import subprocess
import time
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk  
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import datetime
import tkinter as tk
import tkinter.messagebox
from os import path
from subprocess import Popen, PIPE
from tkinter import *
from tkinter import ttk  
from tkinter.filedialog import askopenfilename
from time import sleep
import time
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os
import webbrowser

全调上,懒得后期搞

召唤窗口!

import tkinter as tk
window=tk.Tk()
window.title('My window')//①
window.geometry('450x300')//

会发生什么?
弹出了个窗口!

给窗口“起名”

任何的东西都有名字,你也有。
那么,窗口呢?
也有。
①处,给窗口起名叫做"My window",召唤的窗口,就叫My window。

你有多大?

你多大了?40?30?20?50?
那么窗口呢?
窗口是没有岁数的,但是,他有大小。
②处,给窗口设置了大小,为450x300。

我为什么没有脸?

你有脸,窗口也得有脸。
但是,需要我们来帮他加。

tk.Label(window,text='用户名:').place(x=100,y=150)//③
tk.Label(window,text='密码:').place(x=100,y=190)

③处,我们给My window加了个“嘴”,是“用户名”,他被放在了坐标为x100、y150的位置。

我要个容颜!

窗口只有嘴,没有脸型和其他东西。
我们再给他加上“脸型”。(Hello.png请自己画)


canvas=tk.Canvas(window,height=300,width=500)
imagefile=tk.PhotoImage(file='Hello.png')
image=canvas.create_image(0,0,anchor='nw',image=imagefile)
canvas.pack(side='top')

看!窗口有了图片!

我要耳朵!

var_usr_name=tk.StringVar()
entry_usr_name=tk.Entry(window,textvariable=var_usr_name)
entry_usr_name.place(x=160,y=150)
#密码输入框
var_usr_pwd=tk.StringVar()
entry_usr_pwd=tk.Entry(window,textvariable=var_usr_pwd,show='*')
entry_usr_pwd.place(x=160,y=190)

看!窗口出现了输入框!

我要眼睛

def usr_log_in():
    #输入框获取用户名密码
    usr_name=var_usr_name.get()
    usr_pwd=var_usr_pwd.get()
    #从本地字典获取用户信息,如果没有则新建本地数据库
    try:
        with open('usr_info.pickle','rb') as usr_file:
                usrs_info=pickle.load(usr_file)
    except FileNotFoundError:
        with open('usr_info.pickle','wb') as usr_file:
                usrs_info={'admin':'admin'}
                pickle.dump(usrs_info,usr_file)
    #判断用户名和密码是否匹配
    if usr_name in usrs_info:
        if usr_pwd == usrs_info[usr_name]:
            tk.messagebox.showinfo(title='welcome',
                                     message='欢迎您:'+usr_name)
 
        else:
            tk.messagebox.showerror(message='密码错误')
    #用户名密码不能为空
    elif usr_name=='' or usr_pwd=='' :
        tk.messagebox.showerror(message='用户名或密码为空')
    #不在数据库中弹出是否注册的框
    else:
        is_signup=tk.messagebox.askyesno('欢迎','您还没有注册,是否现在注册')
        if is_signup:
            usr_sign_up()
  #注册函数
def usr_sign_up():
    #确认注册时的相应函数
    def signtowcg():
        #获取输入框内的内容
        nn=new_name.get()
        np=new_pwd.get()
        npf=new_pwd_confirm.get()
 
        
        try:
            with open('usr_info.pickle','rb') as usr_file:
                exist_usr_info=pickle.load(usr_file)
        except FileNotFoundError:
                exist_usr_info={}           
            
            #检查用户名存在、密码为空、密码前后不一致
        if nn in exist_usr_info:
            tk.messagebox.showerror('错误','用户名已存在')
        elif np =='' or nn=='':
            tk.messagebox.showerror('错误','用户名或密码为空')
        elif np !=npf:
            tk.messagebox.showerror('错误','密码前后不一致')
           #注册信息没有问题则将用户名密码写入数据库
        else:
            exist_usr_info[nn]=np
            with open('usr_info.pickle','wb') as usr_file:
                pickle.dump(exist_usr_info,usr_file)
            tk.messagebox.showinfo('欢迎','注册成功')
            #注册成功关闭注册框
            window_sign_up.destroy()
        #新建注册界面
    window_sign_up=tk.Toplevel(window)
    window_sign_up.geometry('350x200')
    window_sign_up.title('注册')
    #用户名变量及标签、输入框
    new_name=tk.StringVar()
    tk.Label(window_sign_up,text='用户名:').place(x=10,y=10)
    tk.Entry(window_sign_up,textvariable=new_name).place(x=150,y=10)
    #密码变量及标签、输入框
    new_pwd=tk.StringVar()
    tk.Label(window_sign_up,text='请输入密码:').place(x=10,y=50)
    tk.Entry(window_sign_up,textvariable=new_pwd,show='*').place(x=150,y=50)    
        #重复密码变量及标签、输入框
    new_pwd_confirm=tk.StringVar()
    tk.Label(window_sign_up,text='请再次输入密码:').place(x=10,y=90)
    tk.Entry(window_sign_up,textvariable=new_pwd_confirm,show='*').place(x=150,y=90)    
    #确认注册按钮及位置
    bt_confirm_sign_up=tk.Button(window_sign_up,text='确认注册',
                             command=signtowcg)
    bt_confirm_sign_up.place(x=150,y=130)

def usr_sign_quit():
	try :
    	window.destroy()
	except :
        pass
bt_login=tk.Button(window,text='登录',command=usr_log_in)
bt_login.place(x=140,y=230)
bt_logup=tk.Button(window,text='注册',command=usr_sign_up)
bt_logup.place(x=210,y=230)
bt_logquit=tk.Button(window,text='退出',command=usr_sign_quit)
bt_logquit.place(x=280,y=230)

这个窗口已经获得了登录、注册、退出的功能啦!
注意:此窗口只可进行本地登录注册,而且运行会产生一个文件,请不要删除!

总结

import tkinter as tk
//调用tkinter
window=tk.Tk()
window.title('xxx')
window.geometry('100x100')
//创建窗口
canvas=tk.Canvas(window,height=300,width=500)
imagefile=tk.PhotoImage(file='xxx.png')
image=canvas.create_image(0,0,anchor='nw',image=imagefile)
canvas.pack(side='top')
//创建canvas画布
bt_login=tk.Button(window,text='Button',command=usr_log_in)
bt_login.place(x=140,y=230)
//创建按钮
var_usr_name=tk.StringVar()
entry_usr_name=tk.Entry(window,textvariable=var_usr_name)
entry_usr_name.place(x=160,y=150)
//创建输入框
tk.messagebox.showinfo(title='messagebox',message='hello,Python!')
//弹出信息
//......

怎么样?学会了吗?
如果喜欢,赶紧关注我哦!

注:未经允许,不可转载!

猜你喜欢

转载自blog.csdn.net/tiantian520ttjs/article/details/102755663