Python3.7的tkinter說明書!還送你一套本地登錄軟件!

什麼是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!')
//彈出信息
//......

怎麼樣?學會了嗎?
如果喜歡,趕緊關注我哦!

注:未經允許,不可轉載!

發佈了19 篇原創文章 · 獲贊 456 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章