3.24 爬蟲小週記

伊念發表於2019-03-24

GUI

  • TKinter: 繫結了TK GUI工具集,Python包裝的Tcl程式碼
  • PyGTK:TKinker的代替品 wxPython:跨平臺的PythonGUI
  • PyQt:跨平臺,商業授權有問題
#呼叫其中的測試包、測試集
import tkinker
tkinter._test()
複製程式碼
import tkinker
gui = tkinker.Tk()
#出現基本的大框
base.mainloop()
#實現訊息迴圈,使用者互動
複製程式碼
  • tkinter常用元件
  •   按鈕
    複製程式碼
  •       Button  按鈕元件
    複製程式碼
  •       RadioButton   單選框元件
    複製程式碼
  •       CheckButton   選擇按鈕元件
    複製程式碼
  •       Listbox   列表框元件
    複製程式碼
  •   文字輸入元件
    複製程式碼
  •       Entry  單行文字框元件
    複製程式碼
  •       Text  多行文字框元件
    複製程式碼
  •  標籤
    複製程式碼
  •       Lable  
    複製程式碼

標籤元件,可以顯示圖片和檔案

  •       Message  標籤
    複製程式碼
  •   選單
    複製程式碼
  •       menu
    複製程式碼
  •       menubutton
    複製程式碼
  •   滾動條
    複製程式碼
  •       scale
    複製程式碼
  •       scrollbar
    複製程式碼
  •   其他常用元件
    複製程式碼
  •       canvas
    複製程式碼
  •       frame
    複製程式碼
  •       toplevel
    複製程式碼
#lable 的例子,大概流程
import tkinter
base = tkinter.Tk()#1.建立了總皮膚

#負責標題
base.wm_title("label test")

#text的位置是base(指定元件的父元件,再利用元件的屬性對元件進行設定,此處新增相應程式碼)
lb = tkinter.Label(base, text="Python lable")

#給相應的元件安排佈局,此處用pack
lb.pack()

#最後啟動總皮膚的訊息迴圈
base.mainloop()
複製程式碼
  • 簡單的講Button
import tkinter


def show_label():
    global base
    lb = tkinter.Label(base, text="show_label")#標籤細節上的東西以後有空再補充
    lb.pack()


base = tkinter.Tk()
btn = tkinter.Button(base, text="show_label",  command=show_label)
#如果不加command那句話指定函式,button會失效
#然後每按一次就呼叫函式增加標籤
#此處詳解等會貼張圖

btn.pack(side=tkinter.TOP, expand=tkinter.YES, fill=tkinter.BOTH)

base.mainloop()
複製程式碼
  •   以下講標籤和佈局,都寫進註釋裡了
    複製程式碼
import tkinter

base = tkinter.Tk()
lb1 = tkinter.Label(base, text="qq號:", background="green").grid(row=0, sticky=tkinter.W)
tkinter.Entry(base).grid(row=0, column=1, sticky=tkinter.E)
#row column編號從0開始
#sticky:N,E,S,W表示上下左右,用來決定元件從哪個方向開始
#ipadx,padx等引數還沒用過,等以後再說吧。。。。。。
#rowspan,columnspan,表示跨行,跨列數量#@¥%¥%。。。。。。。

lb2 = tkinter.Label(base, text="密碼:", background="green").grid(row=1, sticky=tkinter.W)
tkinter.Entry(base).grid(row=1, column=1, sticky=tkinter.E)
btn = tkinter.Label(base, text="登入").grid(row=2, column=1, sticky=tkinter.W)
base.mainloop()
#還有個place佈局,emmmmmm有空再看吧。。
#分絕對佈局和相對佈局,前者用x,y引數,後者用relx,rely,relheight,relwidth
複製程式碼
  •   以下是bind()簡單應用
    複製程式碼
import tkinter


def click(event):
    global base
    lb = tkinter.Label(base, text="thanks for your click")
    lb.pack()


base = tkinter.Tk()
lb = tkinter.Label(base, text="please click")
lb.bind("<Button-1>", click)#繫結訊息與處理函式
lb.pack()
base.mainloop()
複製程式碼
  •   都是些簡單易理解的程式碼
    複製程式碼
import tkinter


def reg():
    name = e1.get()
    pd = e2.get()
    t1 = len(name)
    t2 = len(pd)
    if name == "4902" and pd == "4902":
        lb3["text"] = "登陸成功"
    else:
        lb3["text"] = "使用者名稱或密碼錯誤"
        e1.delete(0, t1)
        e2.delete(0, t2)


base = tkinter.Tk()
lb1 = tkinter.Label(base, text="username")
lb1.grid(row=0, column=0, stick=tkinter.W)
e1 = tkinter.Entry(base)
e1.grid(row=0, column=1, stick=tkinter.E)
lb2 = tkinter.Label(base, text="password")
lb2.grid(row=1, column=0, stick=tkinter.W)
e2 = tkinter.Entry(base)
e2.grid(row=1, column=1, stick=tkinter.E)
e2['show'] = '*'

btn = tkinter.Button(base, text="register", command=reg).grid(row=2, column=1, stick=tkinter.E)
lb3 = tkinter.Label(base, text="").grid(row=3)
base.mainloop()

複製程式碼

3.20-3.24學習總結

  • 基本都是在狂補mySQL和GUI,以及一些Python裡亂七八糟的東西,不過記筆記還是很有用的,確實感覺學的東西要敲一遍才真的有幫助,雖然感覺這幾天學的雜、不知從何記起,(舍友還在敲程式碼。。。)但看了舍友整齊的掘金專欄,我也想把每天學的東西好好整理到上面了,加油吧,其實也沒遇到太多難解決的問題,加油加油!

相關文章