日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)

發布時間:2024/8/26 python 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、圖形化界面設計的基本理解

當前流行的計算機桌面應用程序大多數為圖形化用戶界面(Graphic User Interface,GUI)。

即通過鼠標對菜單、按鈕等圖形化元素觸發指令,并從標簽、對話框等圖型化顯示容器中獲取人機對話信息。
Python自帶了tkinter 模塊,實質上是一種流行的面向對象的GUI工具包 TK 的Python編程接口,提供了快速便利地創建GUI應用程序的方法。

其圖像化編程的基本步驟通常包括:

  • 導入 tkinter 模塊
  • 創建 GUI 根窗體
  • 添加人機交互控件并編寫相應的函數。
  • 在主事件循環中等待用戶觸發事件響應。

2、窗體控件布局

根窗體是圖像化應用程序的根控制器,是tkinter的底層控件的實例。

當導入tkinter模塊后,調用 Tk()方法可初始化一個根窗體實例 root ,用 title() 方法可設置其標題文字,用geometry()方法可以設置窗體的大小(以像素為單位)。

將其置于主循環中,除非用戶關閉,否則程序始終處于運行狀態。

執行該程序,一個窗體就呈現出來了。

在這個主循環的根窗體中,可持續呈現中的其他可視化控件實例,監測事件的發生并執行相應的處理程序。

下面是根窗體呈現示例:

import tkinter #聲明窗體 root=tkinter.Tk() #編輯窗體提示文字 root.title("我的第一個程序") #設置窗體大小·注意,不是乘號*而是小寫的x #如果想設置顯示位置的寫法是:root.geometry("800x600+100+50") root.geometry("800x600+100+50") #展示窗體 root.mainloop()

3、tkinter 常用控件

tkinter常用控件控件名稱作用
Button按鈕單擊觸發事件
Canvas畫布繪制圖形或繪制特殊控件
Checkbutton復選框多項選擇
Entry輸入框接收單行文本輸入
Frame框架用于控件分組
Label標簽單行文本顯示
Listbox列表框顯示文本列表
Menu菜單創建菜單命令
Message消息多行文本標簽,與Label用法類似
Radiobutton單選按鈕從互斥的多個選項中做單項選擇
Scale滑塊默認垂直方向,鼠標拖動改變數值形成可視化交互
Scrollbar滑動條默認垂直方向,鼠標拖動改變數值,可與Text,Listbox,Canvas等控件配合移動可視化空間
Text文本框接收或輸出多行文本
Toplevel新建窗體容器在頂層創建新窗體

4、控件的共同屬性

在窗體上呈現的可視化控件,通常包括尺寸、顏色、字體、相對位置、浮雕樣式、圖標樣式和懸停光標形狀等共同屬性。

不同的控件由于形狀和功能不同,又有其特征屬性。

在初始化根窗體和根窗體主循環之間,可實例化窗體控件,并設置其屬性。父容器可為根窗體或其他容器控件實例。常見的控件共同屬性如下表:

控件的共同屬性屬性說明取值
anchor文本起始位置CENTER(默認),E,S,W,N,NE,SE,SW,NW
bg背景色色值,自行獲取即可
bd加粗(默認2像素)
bitmap黑白二值圖標?
cursor鼠標懸停光標?
font字體
fg字體顏色
height高(文本控件的單位為行)
image顯示圖像
padx水平擴展像素
pady垂直擴展像素
relief3D浮雕樣式flat(平的)、raised(凸起的)、sunken(凹陷的)、groove(溝槽狀邊緣)、ridge(脊狀邊緣)
state控件實例狀態是否可用NORMAL(默認),DISABLED
width寬(文本控件的單位為行)

簡單樣式使用:

import tkinter #聲明窗體 root=tkinter.Tk() #編輯窗體提示文字 root.title("我的第一個程序") #設置窗體大小·注意,不是乘號*而是小寫的x #如果想設置顯示位置的寫法是:root.geometry("800x600+100+50") root.geometry("800x600+100+50") #設置文本標簽label label = tkinter.Label(root,#添加到root下text="HelloWorld",#文本設置bg="#d3fbfb",#背景`顏色fg="red",#字體顏色font=("宋體",32),#字體大小樣式width=20,#寬度height=2,#高度relief="sunken")#設置浮雕樣式 #設置填充布局 label.pack() #展示窗體 root.mainloop()

屬性 relief 為控件呈現出來的3D浮雕樣式,有 flat(平的)、raised(凸起的)、sunken(凹陷的)、groove(溝槽狀邊緣)和 ridge(脊狀邊緣) 5種。

5、控件布局

5.1、place() 使用方法

x:指定組件的 X 坐標。x 為 0 代表位于最左邊。

y:指定組件的 Y 坐標。y 為 0 代表位于最右邊。

relx:指定組件的 X 坐標,以父容器總寬度為單位 1,該值應該在 0.0~1.0 之間,其中 0.0 代表位于窗口最左邊,1.0 代表位于窗口最右邊,0.5 代表位于窗口中間。

rely:指定組件的 Y 坐標,以父容器總高度為單位 1,該值應該在 0.0~1.0? 之間,其中 0.0 代表位于窗口最上邊,1.0 代表位于窗口最下邊,0.5 代表位于窗口中間。

width:指定組件的寬度,以 pixel 為單位。

height:指定組件的高度,以 pixel 為單位。

relwidth:指定組件的寬度,以父容器總寬度為單位 1,該值應該在 0.0~1.0 之間,其中 1.0 代表整個窗口寬度,0.5 代表窗口的一半寬度。

relheight:指定組件的高度,以父容器總高度為單位 1,該值應該在 0.0~1.0 之間,其中 1.0 代表整個窗口高度,0.5 代表窗口的一半高度。

bordermode:該屬性支持“inside”或“outside” 屬性值,用于指定當設置組件的寬度、高度時是否計算該組件的邊框寬度。

當使用 Place 布局管理容器中的組件時,需要設置組件的 x、y 或 relx、rely 選項,Tkinter 容器內的坐標系統的原點 (0,0) 在左上角,其中 X 軸向右延伸,Y 軸向下延伸,如圖所示

如果通過 x、y 指定坐標,單位就是 pixel(像素);如果通過 relx、rely 指定坐標,則以整個父容器的寬度、高度為 1。不管通過哪種方式指定坐標,通過圖 1 不難發現,通過 x 指定的坐標值越大,該組件就越靠右;通過 y 指定的坐標值越大,該組件就越靠下。

5.2、pack() 使用方法

是一種簡單的布局方法,的默認方式將按布局語句的先后,以最小占用空間的方式自上而下地排列控件實例,并且保持控件本身的最小尺寸。
用pack() 方法不加參數排列標簽。為看清楚各控件所占用的空間大小,文本用了不同長度的中英文,并設置relief="groove"的凹陷邊緣屬性。

import tkinter #聲明窗體 import tkinter root = tkinter.Tk() root.title("我的第一個程序") root.geometry("400x400+200+200") LabelRed = tkinter.Label(root,text="abcdefghijklmnopqrstuvwxyz",fg="Red",relief = "groove") LabelRed.pack() LabelGreen = tkinter.Label(root,text="一二三四五六七八九十",fg="green",relief = "groove") LabelGreen.pack() LabelBlue = tkinter.Label(root,text="1234567890",fg="blue",relief = "groove") LabelBlue.pack() root.mainloop()

?

使用pack()方法可設置 fill、side 等屬性參數。其中,參數fill 可取值:fill=X,fill=Y或fill=BOTH,分別表示允許控件向水平方向、垂直方向或二維伸展填充未被占用控件。參數 side 可取值:side=TOP(默認),side=LEFT,side=RIGHT,side=BOTTOM,分別表示本控件實例的布局相對于下一個控件實例的方位。

#coding=utf-8 import tkinter root = tkinter.Tk() root.title("這是標題") root.geometry("400x400+200+200") LabelRed = tkinter.Label(root,text="abcdefghijklmnopqrstuvwxyz",fg="Red",relief = "groove") LabelRed.pack() LabelGreen = tkinter.Label(root,text="一二三四五六七八九十",fg="green",relief = "groove") LabelGreen.pack(fill = "y",side = "right") LabelBlue = tkinter.Label(root,text="1234567890",fg="blue",relief = "groove") LabelBlue.pack(fill = "x",side = "bottom") LabelBlack = tkinter.Label(root,text = "This is BlackLabel",fg = "black",relief = "groove") LabelBlack.pack(fill = "both",side = "left") root.mainloop()

5.3、grid() 使用方法

是基于網格的布局。先虛擬一個二維表格,再在該表格中布局控件實例。由于在虛擬表格的單元中所布局的控件實例大小不一,單元格也沒有固定或均一的大小,因此其僅用于布局的定位。pack()方法與grid()方法不能混合使用。
grid()方法常用布局參數如下:

  • column: 控件實例的起始列,最左邊為第0列。
  • columnspan: 控件實例所跨越的列數,默認為1列。
  • ipadx,ipady: 控件實例所呈現區域內部的像素數,用來設置控件實例的大小。
  • padx,pady: 控件實例所占據空間像素數,用來設置實例所在單元格的大小。
  • row: 控件實例的起始行,最上面為第0行。
  • rowspan: 控件實例的起始行數,默認為1行。
  • import tkinter Win = tkinter.Tk() Win.title("這是標題") Win.geometry("400x400+200+200") LabelRed = tkinter.Label(Win,text="Red",fg="Red",relief='groove') LabelRed.grid(column=2,row=0) LabelGreen = tkinter.Label(Win,text="綠色",fg="green",relief='groove') LabelGreen.grid(column=0,row=1) LabelBlue = tkinter.Label(Win,text="藍",fg="blue",relief="groove") LabelBlue.grid(column=1,columnspan=2,ipadx=20,row=2) Win.mainloop()

    6、tkinter常見控件的特征屬性

    6.1、文本輸入和輸出相關控件

    文本的輸入與輸出控件通常包括:標簽(Label)、消息(Message)、輸入框(Entry)、文本框(Text)。他們除了前述共同屬性外,都具有一些特征屬性和功能。

    標簽(Label)和 消息(Message):除了單行與多行的不同外,屬性和用法基本一致,用于呈現文本信息。值得注意的是:屬性text通常用于實例在第一次呈現時的固定文本,而如果需要在程序執行后發生變化,則可以使用下列方法之一實現:1、用控件實例的configure()方法來改變屬性text的值,可使顯示的文本發生變化;2、先定義一個tkinter的內部類型變量var=StringVar() 的值也可以使顯示文本發生變化。
    看下面的一個例子:制作一個電子時鐘,用root的after()方法每隔1秒time模塊以獲取系統當前時間,并在標簽中顯示出來。

    方法一:利用configure()方法或config()來實現文本變化。

    import tkinter import timedef gettime():timestr = time.strftime("%H:%M:%S") # 獲取當前的時間并轉化為字符串lb.configure(text=timestr) # 重新設置標簽文本root.after(1000,gettime) # 每隔1s調用函數 gettime 自身獲取時間root = tkinter.Tk() root.title('時鐘')lb = tkinter.Label(root,text='',fg='blue',font=("黑體",80)) lb.pack() gettime() root.mainloop()

    方法二:利用textvariable變量屬性來實現文本變化。

    import tkinter import timedef gettime():var.set(time.strftime("%H:%M:%S")) # 獲取當前時間root.after(1000,gettime) # 每隔1s調用函數 gettime 自身獲取時間root = tkinter.Tk() root.title('時鐘') var=tkinter.StringVar()lb = tkinter.Label(root,textvariable=var,fg='blue',font=("黑體",80)) lb.pack() gettime() root.mainloop()

    6.2、文本框(Text)

    文本框的常用方法如下:

    方法功能
    delete(起始位置,[,終止位置])刪除指定區域文本
    get(起始位置,[,終止位置])獲取指定區域文本
    insert(位置,[,字符串]...)將文本插入到指定位置
    see(位置)在指定位置是否可見文本,返回布爾值
    index(標記)返回標記所在的行和列
    mark_names()返回所有標記名稱
    mark_set(標記,位置)在指定位置設置標記
    mark_unset(標記)去除標記

    上表位置的取值可為整數,浮點數或END(末尾),例如0.0表示第0列第0行
    如下一個例子:每隔1秒獲取一次當前日期的時間,并寫入文本框中,如下:本例中調用 datetime.now()獲取當前日期時間,用insert()方法每次從文本框txt的尾部(END)開始追加文本。

    from tkinter import * import time import datetimedef gettime():s=str(datetime.datetime.now())+'\n'txt.insert(END,s)root.after(1000,gettime) # 每隔1s調用函數 gettime 自身獲取時間root=Tk() root.geometry('320x240') txt=Text(root) txt.pack() gettime() root.mainloop()

    6.3、輸入框(Entry)

    通常作為功能比較單一的接收單行文本輸入的控件,雖然也有許多對其中文本進行操作的方法,但通常用的只有取值方法get()和用于刪除文本的delete(起始位置,終止位置),例如:清空輸入框為delete(0,END)。

    語法格式如下:

    w = Entry( master, option, ... )
    • master: 按鈕的父容器。

    • options: 可選項,即該按鈕的可設置的屬性。這些選項可以用鍵 = 值的形式設置,并以逗號分隔。

    序號可選項 & 描述
    1

    bg

    輸入框背景顏色

    2

    bd

    邊框的大小,默認為 2 個像素

    3

    cursor

    光標的形狀設定,如arrow, circle, cross, plus 等

    4

    font

    文本字體

    5

    exportselection

    默認情況下,你如果在輸入框中選中文本,默認會復制到粘貼板,如果要忽略這個功能刻工藝設置 exportselection=0。

    6

    fg

    文字顏色。值為顏色或為顏色代碼,如:'red','#ff0000'

    7

    highlightcolor

    文本框高亮邊框顏色,當文本框獲取焦點時顯示

    8

    justify

    顯示多行文本的時候,設置不同行之間的對齊方式,可選項包括LEFT, RIGHT, CENTER

    9

    relief

    邊框樣式,設置控件3D效果,可選的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默認為 FLAT。

    10

    selectbackground

    選中文字的背景顏色

    11

    selectborderwidth

    選中文字的背景邊框寬度

    12

    selectforeground

    選中文字的顏色

    13

    show

    指定文本框內容顯示為字符,值隨意,滿足字符即可。如密碼可以將值設為 show="*"

    14

    state

    默認為 state=NORMAL, 文框狀態,分為只讀和可寫,值為:normal/disabled

    15

    textvariable

    文本框的值,是一個StringVar()對象

    16

    width

    文本框寬度

    17

    xscrollcommand

    設置水平方向滾動條,一般在用戶輸入的文本框內容寬度大于文本框顯示的寬度時使用。

    方法

    下表為文本框組件常用的方法:

    序號方法 & 描述
    1

    delete ( first, last=None )

    刪除文本框里直接位置值

    text.delete(10) # 刪除索引值為10的值 text.delete(10, 20) # 刪除索引值從10到20之前的值 text.delete(0, END) # 刪除所有值
    2

    get()

    獲取文件框的值

    3

    icursor ( index )

    將光標移動到指定索引位置,只有當文框獲取焦點后成立

    4

    index ( index )

    返回指定的索引值

    5

    insert ( index, s )

    向文本框中插入值,index:插入位置,s:插入值

    6

    select_adjust ( index )

    選中指定索引和光標所在位置之前的值

    7

    select_clear()

    清空文本框

    8

    select_from ( index )

    設置光標的位置,通過索引值 index 來設置

    9

    select_present()

    如果有選中,返回 true,否則返回 false。

    10

    select_range ( start, end )

    選中指定索引位置的值,start(包含) 為開始位置,end(不包含) 為結束位置start必須比end小

    11

    select_to ( index )

    選中指定索引與光標之間的值

    12

    xview ( index )

    該方法在文本框鏈接到水平滾動條上很有用。

    13

    xview_scroll ( number, what )

    用于水平滾動文本框。 what 參數可以是 UNITS, 按字符寬度滾動,或者可以是 PAGES, 按文本框組件塊滾動。 number 參數,正數為由左到右滾動,負數為由右到左滾動。

    from tkinter import *top = Tk() L1 = Label(top, text="網站名") L1.pack( side = LEFT) E1 = Entry(top, bd =5) E1.pack(side = RIGHT)top.mainloop()

    6.4、按鈕(Button)

    主要是為響應鼠標單擊事件觸發運行程序所設的,故其除控件共有屬性外,屬性command是最為重要的屬性。通常,將按鈕要觸發執行的程序以函數形式預先定義,然后可以用一下兩種方法調用函數。Button按鈕的狀態有:'normal','active','disabled'

    • 直接調用函數。參數表達式為“command=函數名”,注意函數名后面不要加括號,也不能傳遞參數。如下面的command=run1:

    • 利用匿名函數調用函數和傳遞參數。參數的表達式為“command=lambda”:函數名(參數列表)。例如下面的:"command=lambda:run2(inp1.get(),inp2.get())"。

    • 看下面的例子:1.從兩個輸入框去的輸入文本后轉為浮點數值進行加法運算,要求每次單擊按鈕產生的算是結果以文本的形式追加到文本框中,將原輸入框清空。2.按鈕方法一不傳參數調用函數run1()實現,按鈕“方法二”用lambda調用函數run2(x,y)同時傳遞參數實現。

    from tkinter import *def run1():a = float(inp1.get())b = float(inp2.get())s = '%0.2f+%0.2f=%0.2f\n' % (a, b, a + b)txt.insert(END, s) # 追加顯示運算結果inp1.delete(0, END) # 清空輸入inp2.delete(0, END) # 清空輸入def run2(x, y):a = float(x)b = float(y)s = '%0.2f+%0.2f=%0.2f\n' % (a, b, a + b)txt.insert(END, s) # 追加顯示運算結果inp1.delete(0, END) # 清空輸入inp2.delete(0, END) # 清空輸入root = Tk() root.geometry('460x240') root.title('簡單加法器')lb1 = Label(root, text='請輸入兩個數,按下面兩個按鈕之一進行加法計算') lb1.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.1) inp1 = Entry(root) inp1.place(relx=0.1, rely=0.2, relwidth=0.3, relheight=0.1) inp2 = Entry(root) inp2.place(relx=0.6, rely=0.2, relwidth=0.3, relheight=0.1)# 方法-直接調用 run1() btn1 = Button(root, text='方法一', command=run1) btn1.place(relx=0.1, rely=0.4, relwidth=0.3, relheight=0.1)# 方法二利用 lambda 傳參數調用run2() btn2 = Button(root, text='方法二', command=lambda: run2(inp1.get(), inp2.get())) btn2.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)# 在窗體垂直自上而下位置60%處起,布局相對窗體高度40%高的文本框 txt = Text(root) txt.place(rely=0.6, relheight=0.4)root.mainloop()

    6.5、單選按鈕:(Radiobutton)

    是為了響應故鄉排斥的若干單選項的單擊事件以觸發運行自定義函數所設的,該控件排除具有共有屬性外,還具有顯示文本(text)、返回變量(variable)、返回值(value)、響應函數名(command)等重要屬性。響應函數名“command=函數名”的用法與Button相同,函數名最后也要加括號。返回變量variable=var通常應預先聲明變量的類型var=IntVar()或var=StringVar(),在所調用的函數中方可用var.get()方法獲取被選中實例的value值。例如下面:

    from tkinter import * def Mysel():dic = {0:'甲',1:'乙',2:'丙'}s = "您選了" + dic.get(var.get()) + "項"lb.config(text = s)root = Tk() root.title('單選按鈕') lb = Label(root) lb.pack()var = IntVar() rd1 = Radiobutton(root,text="甲",variable=var,value=0,command=Mysel) rd1.pack()rd2 = Radiobutton(root,text="乙",variable=var,value=1,command=Mysel) rd2.pack()rd3 = Radiobutton(root,text="丙",variable=var,value=2,command=Mysel) rd3.pack()root.mainloop()

    6.5、復選框:(Checkbutton)

    是為了返回多個選項值的交互控件,通常不直接觸發函數的執行。該控件除具有共有屬性外,還具有顯示文本(text)、返回變量(variable)、選中返回值(onvalue)和未選中默認返回值(offvalue)等重要屬性。返回變量variable=var 通??梢灶A先逐項分別聲明變量的類型var=IntVar() (默認)或 var=StringVar(), 在所調用的函數中方可分別調用 var.get()方法 取得被選中實例的 onvalue或offvalue值。復選框實例通常還可分別利用 select()、deselect()和 toggle() 方法對其進行選中、清除選中和反選操作。

    如下的例子: 利用復選框實現,單擊OK,可以將選中的結果顯示在標簽上。效果如下:

    from tkinter import * import tkinterdef run():if(CheckVar1.get()==0 and CheckVar2.get()==0 and CheckVar3.get()==0 and CheckVar4.get()==0):s = '您還沒選擇任何愛好項目'else:s1 = "足球" if CheckVar1.get()==1 else ""s2 = "籃球" if CheckVar2.get() == 1 else ""s3 = "游泳" if CheckVar3.get() == 1 else ""s4 = "田徑" if CheckVar4.get() == 1 else ""s = "您選擇了%s %s %s %s" % (s1,s2,s3,s4)lb2.config(text=s)root = tkinter.Tk() root.title('復選框') lb1=Label(root,text='請選擇您的愛好項目') lb1.pack()CheckVar1 = IntVar() CheckVar2 = IntVar() CheckVar3 = IntVar() CheckVar4 = IntVar()ch1 = Checkbutton(root,text='足球',variable = CheckVar1,onvalue=1,offvalue=0) ch2 = Checkbutton(root,text='籃球',variable = CheckVar2,onvalue=1,offvalue=0) ch3 = Checkbutton(root,text='游泳',variable = CheckVar3,onvalue=1,offvalue=0) ch4 = Checkbutton(root,text='田徑',variable = CheckVar4,onvalue=1,offvalue=0)ch1.pack() ch2.pack() ch3.pack() ch4.pack()btn = Button(root,text="OK",command=run) btn.pack()lb2 = Label(root,text='') lb2.pack() root.mainloop()

    6.6、列表框 與 組合框

    列表框:(Listbox) 可供用戶單選或多選所列條目以形成人機交互。列表框控件的主要方法見下面的表:

    方法功能描述
    curselection()返回光標選中項目編號的元組,注意并不是單個的整數
    delete(起始位置,終止位置)刪除項目,終止位置可省略,全部清空為delete(0,END)
    get(起始位置,終止位)返回范圍所含項目文本的元組,終止位置可忽略
    insert(位置,項目元素)插入項目元素(若有多項,可用列表或元組類型賦值),若位置為END,則將項目元素添加在最后
    size()返回列表框行數

    執行自定義函數時,通常使用“實例名.surselection()” 或 “selected” 來獲取選中項的位置索引。由于列表框實質上就是將Python 的列表類型數據可視化呈現,在程序實現時,也可直接對相關列表數據進行操作,然后再通過列表框展示出來,而不必拘泥于可視化控件的方法??聪旅娴囊粋€例子:實現列表框的初始化、添加、插入、修改、刪除和清空操作,如下:

    from tkinter import * def ini():Lstbox1.delete(0,END)list_items = ["數學","物理","化學","語文","外語"]for item in list_items:Lstbox1.insert(END,item)def clear():Lstbox1.delete(0,END)def ins():if entry.get() != '':if Lstbox1.curselection() == ():Lstbox1.insert(Lstbox1.size(),entry.get())else:Lstbox1.insert(Lstbox1.curselection(),entry.get())def updt():if entry.get() != '' and Lstbox1.curselection() != ():selected=Lstbox1.curselection()[0]Lstbox1.delete(selected)Lstbox1.insert(selected,entry.get())def delt():if Lstbox1.curselection() != ():Lstbox1.delete(Lstbox1.curselection())root = Tk() root.title('列表框實驗') root.geometry('320x240')frame1 = Frame(root,relief=RAISED) frame1.place(relx=0.0)frame2 = Frame(root,relief=GROOVE) frame2.place(relx=0.5)Lstbox1 = Listbox(frame1) Lstbox1.pack()entry = Entry(frame2) entry.pack()btn1 = Button(frame2,text='初始化',command=ini) btn1.pack(fill=X)btn2 = Button(frame2,text='添加',command=ins) btn2.pack(fill=X)btn3 = Button(frame2,text='插入',command=ins) # 添加和插入功能實質上是一樣的 btn3.pack(fill=X)btn4 = Button(frame2,text='修改',command=updt) btn4.pack(fill=X)btn5 = Button(frame2,text='刪除',command=delt) btn5.pack(fill=X)btn6 = Button(frame2,text='清空',command=clear) btn6.pack(fill=X)root.mainloop()

    組合框:(Combobox) 實質上是帶文本框的上拉列表框,其功能也將是Python 的列表類型數據可視化呈現,并提供用戶單選或多選所列條目以形成人機交互。在圖形化界面設計時,由于其具有靈活的界面,因此往往比列表框更受喜愛。但該控件并不包含在 tkinter 模塊中,而是與 TreeView、Progressbar、Separator等控件一同包含在tkinter 的子模塊ttk中。如果使用該控件,應先與from tkinter import ttk 語句引用ttk子模塊,然后創建組合框實例: 實例名=Combobox(根對象,[屬性列表])
    指定變量var=StringVar(),并設置實例屬性 textvariable = var,values=[列表...]。組合框控件常用方法有:獲得所選中的選項值get()和獲得所選中的選項索引current()。
    看下面的一個例子:實現四則運算計算器,將兩個操作數分別填入兩個文本框后,通過選擇組合框中的算法觸發運算,如下:

    from tkinter.ttk import * from tkinter import *def calc(event):a = float(t1.get())b = float(t2.get())dic = {0:a+b,1:a-b,2:a*b,3:a/b}c = dic[comb.current()]lbl.config(text=str(c))root = Tk() root.title('四則運算') root.geometry('320x240')t1 = Entry(root) t1.place(relx=0.1,rely=0.1,relwidth=0.2,relheight=0.1)t2 = Entry(root) t2.place(relx=0.5,rely=0.1,relwidth=0.2,relheight=0.1)var = StringVar()comb = Combobox(root,textvariable=var,values=['加','減','乘','除',]) comb.place(relx=0.1,rely=0.5,relwidth=0.2) comb.bind('<<ComboboxSelected>>',calc)lbl=Label(root,text='結果') lbl.place(relx=0.5,rely=0.7,relwidth=0.2,relheight=0.3)root.mainloop()

    6.7、滑塊(Scale)

    是一種 直觀地進行數值輸入的交互控件,其主要屬性見下表:

    屬性功能描述
    from_起始值(最小可取值)
    lable標簽文字,默認為無
    length滑塊控件實例寬(水平方向)或 高(垂直方向),默認為100像素
    orient滑塊控件實例呈現方向,VERTCAL或HORIZONTAL(默認)
    repeatdelay鼠標響應延時,默認為 300ms
    resolution分辨精度,即最小值間隔
    sliderlength滑塊寬度,默認為30 像素
    state狀態,若設置 state=DISABLED,則滑塊控件實例不可用
    tickinterval標尺間隔,默認為0,若設置過小,則會重疊
    to終止值(最大可取值)
    variable返回數值類型,可為IntVar(整數)、DoubleVar(浮點數)、或 StringVar(字符串)
    width控件實例本身的寬度,默認為15像素

    滑塊控件實例的主要方法比較簡單,有 get()和set(值),分別為取值和將滑塊設在某特定值上?;瑝K實例也可綁定鼠標左鍵釋放事件<ButtoonRelease-1>,并在執行函數中添加參數event來實現事件響應。
    例如:在一個窗體上設計一個200像素寬的水平滑塊,取值范圍為1.0~5.0,分辨精度為0.05,刻度間隔為 1,用鼠標拖動滑塊后釋放鼠標可讀取滑塊值并顯示在標簽上。效果如下:

    from tkinter import *def show(event):s = '滑塊的取值為' + str(var.get())lb.config(text=s)root = Tk() root.title('滑塊實驗') root.geometry('320x180') var=DoubleVar() scl = Scale(root,orient=HORIZONTAL,length=200,from_=1.0,to=5.0,label='請拖動滑塊',tickinterval=1,resolution=0.05,variable=var) scl.bind('<ButtonRelease-1>',show) scl.pack()lb = Label(root,text='') lb.pack()root.mainloop()

    6.8、菜單:(Menu)

    用于可視化地為一系列的命令分組,從而方便用戶找到和觸發執行這些命令。這里Menu所實例化別的主要是菜單,其通式為:

    菜單實例名=Menu(根窗體) 菜單分組1=Menu(菜單實例名) 菜單實例名.add_cascade(<label=菜單分組1 顯示文本>,<menu=菜單分組1>) 菜單分組1.add_command(<label=命令1文本>,<command=命令1函數名>)

    其中較為常見的方法有:add_cascade()、add_command()和add_separator(),分別用于添加一個菜單分組、添加一條菜單命令和添加一條分割線。
    利用Menu控件也可以創建快捷菜單(又稱為上下文菜單)。通常需要右擊彈出的控件實例綁定鼠標右擊響應事件<Button-3>,并指向一個捕獲event參數的自定義函數,在該自定義函數中,將鼠標的觸發位置event.x_root 和 event.y_root以post()方法傳給菜單。
    例子:仿照window自帶的“記事本”中的文件和編輯 菜單,實現在主菜單個快捷菜單上觸發菜單命令,并相應改變窗體上的標簽的文本內容。效果如下:

    from tkinter import *def new():s = '新建'lb1.config(text=s)def ope():s = '打開'lb1.config(text=s)def sav():s = '保存'lb1.config(text=s)def cut():s = '剪切'lb1.config(text=s)def cop():s = '復制'lb1.config(text=s)def pas():s = '粘貼'lb1.config(text=s)def popupmenu(event):mainmenu.post(event.x_root,event.y_root)root = Tk() root.title('菜單實驗') root.geometry('320x240')lb1 = Label(root,text='顯示信息',font=('黑體',32,'bold')) lb1.place(relx=0.2,rely=0.2)mainmenu = Menu(root) menuFile = Menu(mainmenu) # 菜單分組 menuFile mainmenu.add_cascade(label="文件",menu=menuFile) menuFile.add_command(label="新建",command=new) menuFile.add_command(label="打開",command=ope) menuFile.add_command(label="保存",command=sav) menuFile.add_separator() # 分割線 menuFile.add_command(label="退出",command=root.destroy)menuEdit = Menu(mainmenu) # 菜單分組 menuEdit mainmenu.add_cascade(label="編輯",menu=menuEdit) menuEdit.add_command(label="剪切",command=cut) menuEdit.add_command(label="復制",command=cop()) menuEdit.add_command(label="粘貼",command=pas())root.config(menu=mainmenu) root.bind('Button-3',popupmenu) # 根窗體綁定鼠標右擊響應事件 root.mainloop()

    6.9、子窗體

    用Toplevel可新建一個顯示在最前面的子窗體,其通式為: 字體實例名=Toplevel(根窗體),子窗體與根窗體類似,也可設置title、geomerty等屬性,并在畫布上布局其他控件。如下的例子:在根窗體上創建菜單,觸發創建一個新的窗體

    from tkinter import *def newwind():winNew = Toplevel(root)winNew.geometry('320x240')winNew.title('新窗體')lb2 = Label(winNew,text='我在新窗體上')lb2.place(relx=0.2,rely=0.2)btClose=Button(winNew,text='關閉',command=winNew.destroy)btClose.place(relx=0.7,rely=0.5)root = Tk() root.title('新建窗體實驗') root.geometry('320x240')lb1 = Label(root,text='主窗體',font=('黑體',32,'bold')) lb1.place(relx=0.2,rely=0.2)mainmenu = Menu(root) menuFile = Menu(mainmenu) mainmenu.add_cascade(label='菜單',menu=menuFile) menuFile.add_command(label='新窗體',command=newwind) menuFile.add_separator() menuFile.add_command(label='退出',command=root.destroy)root.config(menu=mainmenu) root.mainloop()

    關閉窗體程序運行的方法通常用 destory(),而不建議用 quit()。用Toplevel 所創建的子窗體是非模式(Modeless)的窗體,雖然初建時子窗體在最前面,但根窗體上的控件實例也是可以被操作的。

    6.10、模式對話框(Modal)

    是相對于前面介紹的非模式窗體而言的,所彈出的對話框必須應答,在關閉之前無法操作其后面的其他窗體。常見的模式對話框有消息對話框、輸入對話框、文件選擇對話框、顏色選擇對話框等。

    消息對話框: 引用 tkinter.messagebox 包,可使用消息對話框函數。執行這些函數,可彈出模式消息對話框,并根據用戶的響應但會一個布爾值。其通式為:

    消息對話框函數(<title=標題文本>,<message=消息文本>,[其他參數])

    看下面的例子:單擊按鈕,彈出確認取消對話框,并將用戶回答顯示在標簽中。效果如下:

    from tkinter import * import tkinter.messageboxdef xz():answer=tkinter.messagebox.askokcancel('請選擇','請選擇確定或取消')if answer:lb.config(text='已確認')else:lb.config(text='已取消')root = Tk()lb = Label(root,text='') lb.pack() btn=Button(root,text='彈出對話框',command=xz) btn.pack() root.mainloop()

    ?

    輸入對話框:

    引用tkinter.simpledialog包,可彈出輸入對話框,用以接收用戶的簡單輸入。輸入對話框常用 askstring()、askfloat()和askfloat() 三種函數,分別用于接收字符串、整數和浮點數類型的輸入。
    如下面的例子:單擊按鈕,彈出輸入對話框,接收文本輸入顯示在窗體的標簽上。如下:

    from tkinter.simpledialog import *def xz():s=askstring('請輸入','請輸入一串文字')lb.config(text=s)root = Tk()lb = Label(root,text='') lb.pack() btn=Button(root,text='彈出輸入對話框',command=xz) btn.pack() root.mainloop()

    文件選擇對話框

    引用tkinter.filedialog包,可彈出文件選擇對話框,讓用戶直觀地選擇一個或一組文件,以供進一步的文件操作。常用的文件選擇對話框函數有 askopenfilename()、askopenfilenames()和asksaveasfilename(),分別用于進一步打開一個文件、一組文件和保存文件。其中,askopenfilename()和asksaveasfilenamme()函數的返回值類型為包含文件路徑的文件名字符串,而askopenfilenames()函數的返回值類型為元組。
    例如:單擊按鈕,彈出文件選擇對話框(“打開”對話框),并將用戶所選擇的文件路徑和文件名顯示在窗體的標簽上。如下:

    from tkinter import * import tkinter.filedialogdef xz():filename=tkinter.filedialog.askopenfilename()if filename != '':lb.config(text='您選擇的文件是'+filename)else:lb.config(text='您沒有選擇任何文件')root = Tk()lb = Label(root,text='') lb.pack() btn=Button(root,text='彈出文件選擇對話框',command=xz) btn.pack() root.mainloop()

    ?打開選擇窗口:

    選中文件:

    6.11、顏色選擇對話框

    引用tkinter.colorchooser包,可使用 askcolor()函數彈出模式顏色選擇對話框,讓用戶可以個性化地設置顏色屬性。該函數的返回形式為包含RGB十進制浮點元組和RGB十六進制字符串的元組類型,例如:“((135.527343.52734375,167.65234375,186.7265625)),'#87a7ba'”。通常,可將其轉換為字符串類型后,再截取以十六進制數表示的RGB顏色字符串用于為屬性賦值。
    舉例:單擊按鈕,彈出顏色選擇對話框,并將用戶所選擇的顏色設置為窗體上標簽的背景顏色,如下:

    from tkinter import * import tkinter.colorchooserdef xz():color=tkinter.colorchooser.askcolor()colorstr=str(color)print('打印字符串%s 切掉后=%s' % (colorstr,colorstr[-9:-2]))lb.config(text=colorstr[-9:-2],background=colorstr[-9:-2])root = Tk()lb = Label(root,text='請關注顏色的變化') lb.pack() btn=Button(root,text='彈出顏色選擇對話框',command=xz) btn.pack() root.mainloop()

    7、事件響應

    用tkinter 可將用戶事件與自定義函數綁定,用鍵盤或鼠標的動作事件來響應觸發自定義函數的執行。其通式為:

    控件實例.bind(<事件代碼>,<函數名>)

    其中,事件代碼通常以半角小于號“<”和大于號“>” 界定,包括事件和按鍵等 2~3個部分,它們之間用減號分隔,常見事件代碼見下表:

    事件事件代碼備注
    單擊鼠標左鍵<ButtonPress-1>可簡寫為<Button-1> 或 <1>
    單擊鼠標中鍵<ButtonPress-2>可簡寫為<Button-2> 或 <2>
    單擊鼠標右鍵<ButtonPress-3>可簡寫為<Button-3> 或 <3>
    釋放鼠標左鍵<ButtonRelease-1>---
    釋放鼠標中鍵<ButtonRelease-2>---
    釋放鼠標右鍵<ButtonRelease-3>---
    按住鼠標左鍵移動<B1-Motion>---
    按住鼠標中鍵移動<B2-Motion>---
    按住鼠標右鍵移動<B3-Motion>---
    轉動鼠標滾輪<MouseWheel>---
    雙擊鼠標左鍵<Double-Button-1>---
    鼠標進入控件實例<Enter>注意與回車事件的區別
    鼠標離開控件實例<Leave>---
    鍵盤任意鍵<Key>---
    字母和數字< Key-字母>,例如<key-a>、<Key-A>簡寫不帶小于和大于號,例如:a,A和1等
    回車<Return><Tab>,<Shift>,<Control>(注意不能用<Ctrl>),<Alt>等類同
    空格<Space>---
    方向鍵<Up> ,<Down>,<Left>,<Right>---
    功能鍵<Fn>例如:<F1>等---
    組合鍵鍵名之間以減號鏈接,例如<Control-k>,<Shift-6>,<Alt-Up>等注意大小寫

    例如,將框架控件實例frame 綁定鼠標右鍵單擊事件,調用自定義函數 myfunc()可表示為"frame.bind('<Button-3>',myfunc)",注意: myfunc后面沒有括號。將控件實例綁定到鍵盤事件和部分光標不落在具體控件實例上的鼠標事件時,還需要設置該實例執行focus_set() 方法獲得焦點,才能對事件持續響應。例如: frame.focus_set()。所調用的自定義函數若需要利用鼠標或鍵盤的響應值,可將event作為參數,通過event的屬性獲取。event的屬性見下表:

    event屬性意義
    x或y(注意是小寫)相對于事件綁定控件實例左上角的坐標值(像素)
    root_x或root_y(注意是小寫)相對于顯示屏幕左上角的坐標值(像素)
    char可顯示的字符,若按鍵不可顯示,則返回為空字符串
    keysysm字符或字符型按鍵名,如:“a”或“Escape”
    keysysm_num按鍵的十進制 ASCII 碼值

    例如:將標簽綁定鍵盤任意鍵觸發事件并獲取焦點,并將按鍵字符顯示在標簽上

    from tkinter import *def show(event):s=event.keysymlb.config(text=s)root=Tk() root.title('按鍵實驗') root.geometry('200x200') lb=Label(root,text='請按鍵',font=('黑體',48)) lb.bind('<Key>',show) lb.focus_set() lb.pack() root.mainloop()

    希望能給大家帶來幫助,所有案例都經過多次測試,放心食用。

    總結

    以上是生活随笔為你收集整理的零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    日本成人免费在线观看 | 国产精品美女久久久久久久 | 色永久免费视频 | 久久激情网站 | 91九色老 | 久久黄色片 | 九九精品视频在线看 | 日韩av网址在线 | 色999五月色 | 91亚洲国产成人久久精品网站 | 成人午夜久久 | 人人爽人人爽人人爽人人爽 | 久久久久久久久亚洲精品 | 日韩一级电影网站 | 91传媒视频在线观看 | 亚洲免费在线观看视频 | 免费网址你懂的 | 亚洲手机天堂 | 中文字幕国内精品 | 亚洲精品看片 | av综合在线观看 | 免费福利视频导航 | www.五月天婷婷 | 午夜视频在线观看网站 | 色综合久久88色综合天天免费 | 亚洲国产一区二区精品专区 | 91高清在线看 | 中文字幕 国产精品 | www在线观看视频 | 天天色天天爱天天射综合 | 久久观看| 免费观看视频的网站 | a视频免费在线观看 | 在线免费黄色av | 亚洲精品国产高清 | 亚洲成人黄色在线观看 | 日韩专区中文字幕 | 伊人手机在线 | 日本韩国精品一区二区在线观看 | 中文字幕五区 | 欧美特一级 | 日日干天天 | 手机成人在线 | 伊人丁香 | 蜜桃视频日本 | 人人插人人看 | 9999激情| 91自拍成人 | 国产美女主播精品一区二区三区 | 色.com| 亚洲国产精品一区二区尤物区 | 国产剧情在线一区 | 中文字幕av免费在线观看 | 欧美片网站yy | 国产在线视频导航 | 色多多视频在线观看 | 亚洲精品视频观看 | 九色porny真实丨国产18 | 亚洲欧美国产日韩在线观看 | 天天操天天干天天玩 | 人人澡人人舔 | 欧美另类高清 videos | 97在线视频观看 | 99电影456麻豆 | 国产精品免费久久久久影院仙踪林 | 亚洲成人精品影院 | 激情网色| 欧美男男激情videos | 啪啪激情网 | 久久国产精品久久w女人spa | 欧美激情精品久久久 | 久久99这里只有精品 | 中文字幕刺激在线 | 亚洲va综合va国产va中文 | 欧美 国产 视频 | 国产在线精品区 | 成人国产亚洲 | 97日日碰人人模人人澡分享吧 | 中文字幕欧美三区 | 日本天天色 | 日韩a在线看 | 国产精品久久久久一区二区国产 | 国产在线播放观看 | 在线观看视频在线观看 | 97视频播放 | 日韩成人在线一区二区 | 成人性生交大片免费看中文网站 | 欧美一级小视频 | 亚洲欧美国产精品va在线观看 | 国产一区网址 | 91在线porny国产在线看 | 欧美精品午夜 | 91成年人网站 | 亚洲欧美日本一区二区三区 | 天堂网一区| 国产精品一区久久久久 | 开心丁香婷婷深爱五月 | 欧美大jb| 午夜视频播放 | 五月天,com| 天天射综合网视频 | 四虎永久免费 | 国产九九精品视频 | 黄色小网站在线 | 国产精品com | 色综合久久天天 | 亚洲精品动漫成人3d无尽在线 | 人人插人人插 | 色爱区综合激月婷婷 | 免费黄色特级片 | 亚洲国产精品视频在线观看 | 久久精品久久国产 | 偷拍久久久 | 91精品无人成人www | 国产在线观看一区 | 激情网站网址 | 免费 在线 中文 日本 | 亚洲综合精品在线 | 午夜精品一区二区国产 | 中文字幕综合在线 | 91精品视频在线免费观看 | 天天综合网在线观看 | 久久久久成人精品亚洲国产 | av成人在线网站 | 天天射天天爱天天干 | 久久av在线 | 国产精品免费大片视频 | 亚洲综合五月 | 亚洲天天综合网 | 日韩激情片在线观看 | 免费三级黄 | 97精品国产97久久久久久粉红 | 色国产精品 | 国产精品一区二区av日韩在线 | 久久蜜臀av | 婷婷射五月 | 日日躁夜夜躁aaaaxxxx | 久久五月婷婷丁香 | 亚洲人成精品久久久久 | 亚洲黄色免费观看 | 国产精品在线看 | 777奇米四色| 中文字幕在线观看视频一区二区三区 | 深爱激情综合网 | 国产在线观看网站 | 国产打女人屁股调教97 | 日韩精品偷拍 | 国产成人一级 | 狠狠五月天 | wwwww.国产 | 成年人视频免费在线 | 一区二区三区日韩在线观看 | 久久精品人人做人人综合老师 | 91插插插免费视频 | 日本一区二区三区视频在线播放 | 激情av五月婷婷 | 久久综合久久综合这里只有精品 | 国产精品99久久久久久久久久久久 | 欧美日韩三级在线观看 | 96视频在线 | 玖操 | www.狠狠 | 夜夜爽夜夜操 | 成人黄色影片在线 | 日韩在线免费视频 | 久久久精品一区二区 | 久久成人免费电影 | 不卡中文字幕在线 | 99精彩视频在线观看免费 | 国产精品久久久网站 | 伊人亚洲综合 | 国产一区视频免费在线观看 | 玖玖在线免费视频 | 久久精品久久国产 | 999久久国产精品免费观看网站 | 国产亚洲精品成人av久久影院 | 国产精品麻| 久久久久久久网 | 免费av大片 | 亚洲天堂色婷婷 | 精品国产伦一区二区三区观看方式 | 欧美日本不卡高清 | 久久爱资源网 | 免费在线播放 | 国产精品99久久久久久大便 | 亚洲少妇久久 | 91在线视频免费播放 | 97超碰人| 18国产精品白浆在线观看免费 | 国产精品久久综合 | 国产精品久久综合 | 麻豆视传媒官网免费观看 | 在线欧美最极品的av | 激情小说 五月 | 中文字幕 国产专区 | 91亚洲精品乱码久久久久久蜜桃 | 99热99re6国产在线播放 | 视频二区在线视频 | 一区二区三区在线观看免费 | 免费观看国产精品视频 | 91丨九色丨蝌蚪丨对白 | 亚洲国产资源 | 天天干天天弄 | 国产成人综合精品 | 四虎海外影库www4hu | 色久天 | 欧美天堂影院 | 香蕉在线视频观看 | 久久久www成人免费精品张筱雨 | 国产 日韩 中文字幕 | 欧美精品一区二区三区四区在线 | 玖玖视频 | 国产一区电影在线观看 | 国产麻豆剧果冻传媒视频播放量 | 成人一级片免费看 | 国内综合精品午夜久久资源 | 欧美激情第八页 | 国内精品久久久久久久久久久 | 欧美韩国日本在线观看 | 久久99国产综合精品 | 日一日干一干 | 色伊人网| 97色婷婷 | 激情网站五月天 | 欧美一区二区在线免费看 | 91九色视频网站 | 91看片成人 | 91麻豆操 | 国产在线国偷精品产拍免费yy | 公开超碰在线 | 日日日干 | 日韩av在线高清 | 国产精品毛片久久久久久 | 中文字幕永久免费 | 久久艹免费 | 西西大胆免费视频 | 国产亚洲欧洲 | 国产精品久久久久久久久久久久冷 | 免费看黄电影 | 中文字幕av免费 | 少妇自拍av | 成人午夜电影在线观看 | 国产精品第二十页 | 国产直播av| 久久婷婷综合激情 | 91天天操 | 国产手机在线视频 | 久久精品网站视频 | 久久久久免费精品视频 | 91九色视频观看 | 中文字幕 国产视频 | 最近免费中文字幕 | av先锋中文字幕 | 91视频在线免费观看 | 亚洲精品456在线播放 | 黄色91免费观看 | 日韩网站中文字幕 | 精品国产网址 | 国产理论免费 | 在线不卡视频 | 麻豆视传媒官网免费观看 | 五月婷婷中文网 | 精品国产一区二 | 亚洲第一av在线播放 | 婷婷丁香激情综合 | av在线短片| 免费久久久久久久 | 亚洲视频免费在线观看 | 国产伦理久久 | 精品国产一区二区三区日日嗨 | 三级动图| 久久99在线视频 | 国产1区2区 | 福利视频一区二区 | 丁香五月亚洲综合在线 | 国产精品久久电影网 | 三级av免费观看 | 天天操综合网 | 欧美日韩国产成人 | 亚洲高清色综合 | 欧美日韩视频免费 | 一区二区三区动漫 | 国产黄免费在线观看 | www色片 | 免费看的黄色 | 国产精品igao视频网入口 | 久久伊人精品天天 | 亚洲一区久久 | 久久久久国产一区二区三区四区 | 91成品视频 | 亚洲伦理电影在线 | 日韩字幕在线观看 | 精品天堂av | 久久国产精品久久精品国产演员表 | 国产黄色精品在线 | 丁香六月欧美 | 97精品视频在线 | www.香蕉视频 | 久草在线视频首页 | 成人亚洲精品久久久久 | 成人av在线观 | 国产成人精品一区二区三区在线观看 | 欧洲色综合 | 国产精品自拍在线 | 国产视频1| 亚洲国产精品传媒在线观看 | 亚洲精品2区 | 天天操操操操操 | 久久久久久久久影视 | 久久中文字幕视频 | 免费黄a| 久久久久久久久久影视 | 欧美性视频网站 | 狠狠五月婷婷 | 天天艹 | av丁香花| 久久经典国产视频 | 激情偷乱人伦小说视频在线观看 | 婷婷四房综合激情五月 | 日韩精品视频一二三 | 91成年人网站 | 免费看一及片 | 免费又黄又爽视频 | 免费看片在线观看 | 国产精品视频最多的网站 | 国产精品一区二区精品视频免费看 | 免费观看一区二区 | 四虎免费在线观看视频 | 日韩中文字幕网站 | 三级av中文字幕 | 麻豆91小视频 | 伊人天堂av | 97在线观看| 国产精品久免费的黄网站 | 中国成人一区 | 久99久精品 | 亚洲成a人片77777kkkk1在线观看 | 中文字幕在线观看2018 | 婷婷色六月天 | 久久精品免费观看 | 日韩免费中文 | 天天色天天操综合网 | 欧美极品xxx | 免费看日韩 | 免费国产黄线在线观看视频 | 欧美久久久久久久久中文字幕 | 成人免费xyz网站 | 在线小视频你懂的 | 色婷婷成人网 | 中文字幕在线观看的网站 | 97国产人人 | 国产精品va在线观看入 | 色网站在线免费观看 | 黄色av一级片 | 国产精品 欧美 日韩 | 日韩中字在线观看 | 日韩在线播放av | 中文字幕亚洲五码 | 91视频国产高清 | 久久综合九色综合久99 | 久草久热| 亚洲美女视频在线观看 | 五月婷婷另类国产 | 国产生活一级片 | 一区二区三区日韩视频在线观看 | а天堂中文最新一区二区三区 | 国产自产高清不卡 | 国产精品视频免费观看 | 亚洲激精日韩激精欧美精品 | 99国产精品 | 色橹橹欧美在线观看视频高清 | 亚洲激情中文 | 精品久久久国产 | 999电影免费在线观看 | 日韩高清在线一区 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 国产97碰免费视频 | 久久精品欧美日韩精品 | 亚洲精品视频在线播放 | 在线色视频小说 | 久久久91精品国产一区二区三区 | 91在线免费公开视频 | 男女日麻批 | 日本动漫做毛片一区二区 | 亚洲成人精品在线 | 国产成人精品亚洲日本在线观看 | 草在线 | 婷婷五情天综123 | 日批视频在线观看免费 | 伊人婷婷网 | 国产视频一区精品 | 天天综合网久久综合网 | 色欧美视频 | 最新av免费在线观看 | 色无五月| 日韩精品一区二区三区高清免费 | 欧美巨大荫蒂茸毛毛人妖 | 中文在线字幕免费观 | 黄色毛片视频免费观看中文 | 欧美a级在线免费观看 | 最近中文字幕视频网 | 美女很黄免费网站 | 三级黄色理论片 | 91免费观看 | 亚洲视频电影在线 | 五月婷婷黄色 | 91丨九色丨国产丨porny精品 | 国产黄色片免费 | 色综合网在线 | 成人免费xxx在线观看 | 日韩精品一区二区在线观看 | 精品一区二区在线看 | 激情六月婷婷久久 | 日韩在线电影观看 | 国产一区二区在线免费播放 | 亚洲国产资源 | 狠狠操狠狠干天天操 | 精品99免费视频 | 天天综合网在线 | 亚洲在线激情 | 中文字幕精品www乱入免费视频 | 正在播放五月婷婷狠狠干 | 国外调教视频网站 | 99在线观看| 综合天堂av久久久久久久 | 黄色免费观看视频 | 在线天堂日本 | 亚洲成av片人久久久 | 国产激情电影综合在线看 | 亚洲成人免费在线观看 | www..com黄色片 | 婷婷中文字幕在线观看 | www.色午夜.com | 9在线观看免费高清完整版在线观看明 | 免费av小说 | 久久久91精品国产 | 国产亚洲综合性久久久影院 | 91视频首页| 久久无码精品一区二区三区 | 黄色一级免费 | 17婷婷久久www | 韩日电影在线免费看 | 三级黄色免费 | 91麻豆精品国产91久久久久久 | 日韩网站免费观看 | 免费a v视频 | 在线播放精品一区二区三区 | av在线一二三区 | 亚洲区另类春色综合小说 | 99精品免费视频 | 免费观看黄 | 天天爽天天爽天天爽 | 国产成人精品福利 | 久久伦理影院 | 久久综合综合久久综合 | 婷婷激情网站 | 少妇做爰k8经典 | 色综合咪咪久久网 | 91视频 - v11av | 国产日韩精品在线观看 | 美女久久久久久久 | 国产中文在线视频 | 免费黄色小网站 | 久艹在线播放 | 一区二区三区四区精品视频 | 99视频在线免费观看 | 亚洲精品99久久久久久 | 国产无遮挡又黄又爽在线观看 | 亚洲精品午夜久久久久久久 | 欧美日韩久久不卡 | 久久精品视频2 | 国产免费大片 | 欧美精品久久久久久 | 91精品久久久久久综合乱菊 | 亚洲国产美女精品久久久久∴ | 日韩特级黄色片 | 天天射综合网站 | 一级c片| 狠狠狠色 | 亚洲黄色免费在线看 | 欧美日韩免费观看一区=区三区 | 欧美日韩在线精品一区二区 | 亚洲日韩精品欧美一区二区 | 国产精品久久久久aaaa九色 | 男女精品久久 | 伊人亚洲综合网 | www.狠狠操.com| 久久一区二区三区国产精品 | 国产高清视频 | 91精彩视频在线观看 | 91激情| 毛片一二区 | 久久黄色a级片 | 婷婷干五月 | 麻豆一区二区三区视频 | 欧美另类色图 | 日本二区三区在线 | 日韩视频图片 | 天天舔天天射天天操 | 天天色天天色 | 久久久精品影视 | 精品国产一区二区三区四区vr | 欧美狠狠色| 中文字幕永久免费 | 欧美日韩精品在线播放 | 久久精品视频播放 | 国产精品视频全国免费观看 | 久久久久久久久久久久久久电影 | 在线免费精品视频 | 九九亚洲视频 | 日韩久久久久久久久久久久 | 97视频网站 | 久久高清国产 | 国产精品入口久久 | 中文字幕在线观看1 | 久久久久久福利 | 涩涩伊人| 天天躁日日躁狠狠躁av麻豆 | 人人干狠狠操 | 国产一级二级三级视频 | 天天操天天操天天操 | 久久精品亚洲精品国产欧美 | 国产成人久久av免费高清密臂 | 黄色成人免费电影 | 97在线看片 | 亚洲电影影音先锋 | 国产精品白丝jk白祙 | 麻豆高清免费国产一区 | 国产精品毛片一区二区 | 99热只有精品在线观看 | 黄色资源在线观看 | 亚洲国产理论片 | 久久精品网站免费观看 | 日韩a在线播放 | 国产一级黄色片免费看 | 青青草华人在线视频 | 青青河边草免费直播 | www.色国产| 丁香免费视频 | 欧美另类老妇 | 99精品在线观看 | 99色99| 91激情视频在线观看 | 成人97视频 | 能在线看的av | 国产伦精品一区二区三区无广告 | 国产亚洲欧美在线视频 | 日韩高清无线码2023 | 三级黄色网址 | 伊人中文字幕在线 | 亚洲 综合 精品 | 精品99视频 | 99这里只有精品视频 | 国内久久 | 国产精品观看在线亚洲人成网 | 天天草天天| 国产精品一区二 | 狠狠狠的干 | 日韩欧美视频免费在线观看 | 亚洲国产中文在线观看 | 在线观看免费视频 | 欧美日韩免费一区二区三区 | 精品96久久久久久中文字幕无 | 成人久久影院 | 狠狠干婷婷色 | 久草网在线| 久久久久久久99 | 一区二区三区免费 | 五月天天色 | 综合黄色网 | 免费视频久久久久 | 国产一区二区在线免费 | 精品国模一区二区三区 | 日韩免费视频网站 | 天天综合人人 | 51久久夜色精品国产麻豆 | 久久久久国产精品一区二区 | 81精品国产乱码久久久久久 | 天天看天天干 | 亚洲,国产成人av | 米奇四色影视 | 久一在线 | 国产免费一区二区三区最新6 | 91在线精品秘密一区二区 | 日本久久高清视频 | 久热免费在线观看 | 日日干天天干 | 黄色毛片在线观看 | 91精品国产高清自在线观看 | 狠狠狠色丁香婷婷综合久久五月 | 欧美日韩国语 | 亚洲精品男人的天堂 | av黄色大片 | 狠狠狠狠干 | 在线天堂中文www视软件 | 九九九九热精品免费视频点播观看 | 日日夜夜91| 69av在线播放 | 久久99精品久久久久久久久久久久 | 91免费的视频在线播放 | 六月丁香综合网 | 美女视频一区二区 | 黄色三级在线观看 | 激情在线网址 | 久久久久一区二区三区 | 波多野结衣在线播放一区 | 国产精品久久片 | 97视频人人免费看 | 精品在线一区二区 | 国产一区二区网址 | 中文字幕精品一区久久久久 | 国产精品成人自产拍在线观看 | 国产一级片在线播放 | 国内精品视频久久 | 久久99国产精品久久99 | 欧美一区二区三区在线视频观看 | 亚洲成av人片一区二区梦乃 | 黄色精品视频 | 激情文学丁香 | 国产高清在线免费 | a视频免费 | 天天se天天cao天天干 | 在线欧美国产 | 欧美一二三专区 | 欧美a免费 | 免费国产黄线在线观看视频 | 美女网站在线免费观看 | 国产高清日韩欧美 | 亚洲一区二区麻豆 | 成人a免费看| 亚洲日本黄色 | 日韩av高潮 | 国产高清精品在线 | wwwwww黄| 日韩成人欧美 | 丝袜少妇在线 | 欧美日韩亚洲在线观看 | 黄色www在线观看 | 久久精品导航 | 久久久久久毛片精品免费不卡 | 日p在线观看 | 日韩乱码在线 | 日韩中文字幕在线看 | 国产婷婷在线观看 | 久久综合影音 | 午夜精品一区二区三区四区 | 亚洲一区天堂 | 欧美坐爱视频 | 亚洲国产中文在线观看 | av网站免费线看精品 | 国产手机在线观看视频 | 青青草在久久免费久久免费 | 丰满少妇在线观看 | 成人久久久精品国产乱码一区二区 | av黄色免费看 | 夜色在线资源 | 在线观看a视频 | 国产精品99久久久久 | 99色在线观看 | 国产精品影音先锋 | 久久久久久国产精品亚洲78 | 亚洲桃花综合 | 91香蕉视频 | 天天干天天弄 | 911在线 | 99久久99视频 | 超碰在线国产 | av黄色在线观看 | 国产精品麻豆欧美日韩ww | 亚洲国产精品一区二区尤物区 | 97日日 | www.久久免费视频 | 91av原创 | 三级a毛片| 国产精品福利无圣光在线一区 | 亚洲成av | 韩日精品在线 | 精品亚洲va在线va天堂资源站 | 久久综合九九 | 欧美日韩亚洲一 | 伊人首页| 91完整版在线观看 | 国产福利91精品 | 久草视频中文 | 免费h视频 | 久久蜜臀一区二区三区av | 高清免费av在线 | 国产精品久久久久四虎 | 成人av一区二区兰花在线播放 | 天天操天天是 | 人人澡av| 日韩在线三级 | 中文字幕免费高 | 免费在线观看一级片 | 免费观看国产视频 | 久久不卡av | 一级黄色片毛片 | 亚洲精品午夜久久久久久久 | 天天色天天综合网 | 黄色大片免费网站 | 天天爱天天射天天干天天 | 超碰在线免费97 | 久久婷婷国产色一区二区三区 | 久久综合欧美 | 亚洲丁香久久久 | 超碰伊人网 | 久久久一本精品99久久精品66 | 国产在线不卡 | 国产欧美精品xxxx另类 | 亚洲精品视频在线播放 | www.久久com| 人人插超碰 | 久久黄色精品视频 | 国产亚洲日 | 国产毛片在线 | 亚洲日本va午夜在线电影 | 福利视频一二区 | 国产一区二区不卡在线 | 亚洲国产影院av久久久久 | 天天射天天干天天 | 天天操夜夜看 | 中国精品少妇 | 国产麻豆传媒 | 久久精品99国产国产 | 久久久国产精品亚洲一区 | 黄色www| 欧美午夜视频在线 | www.亚洲| 欧美在线视频一区二区 | 五月婷婷视频 | 欧美污网站 | 天天射网站 | 黄色片软件网站 | 欧美激情精品久久久 | 久久久国产精品久久久 | 久久精品欧美一区二区三区麻豆 | 五月天久久婷 | 在线日本看片免费人成视久网 | 日韩一二三在线 | 久久久久国产精品午夜一区 | 探花视频在线观看免费 | 国产美女精品人人做人人爽 | 91视视频在线直接观看在线看网页在线看 | 色精品视频 | 久久久久久久免费 | 亚洲美女免费视频 | 91色蜜桃 | 国产一区二区免费 | 欧美夫妻性生活电影 | 狠狠干夜夜 | 免费日韩三级 | 99热精品在线 | 国产精品婷婷午夜在线观看 | 成人免费电影 | 99久久久久免费精品国产 | 久久高清| 婷婷 综合 色| www国产一区| 精品国产美女在线 | 日本精品视频在线观看 | 久久久综合九色合综国产精品 | 久久精品美女视频 | 国产精品美女久久久久久免费 | 成人av地址| 国产精品网红福利 | 在线免费观看欧美日韩 | 午夜视频在线观看网站 | 五月天色综合 | 在线91精品| 亚洲一区二区三区四区在线视频 | 久久久久久久久毛片精品 | 久久精品亚洲一区二区三区观看模式 | 国产高清视频在线播放 | 国产毛片aaa | 久久综合影音 | 色av网站 | 国产一区二区三区免费观看视频 | 国产一级黄色av | 国内精品久久久久久久久久久 | 久久久精品国产免费观看一区二区 | 在线久热| 日韩视频免费播放 | 国产亚洲精品福利 | avav片| 在线播放精品一区二区三区 | 久久综合视频网 | 久久毛片网站 | 91免费试看 | 夜夜干天天操 | 蜜臀av一区二区 | 国产人成精品一区二区三 | 久久亚洲福利视频 | 亚洲精品视频www | www在线观看国产 | 亚洲区另类春色综合小说校园片 | 成人在线小视频 | 麻豆传媒精品 | 国产精品精品国产婷婷这里av | 国产高清久久久 | 狠狠狠狠狠狠操 | 国内精品久久久久国产 | 国产一区二区不卡在线 | 久久久国产精品人人片99精片欧美一 | 日本黄色特级片 | 久久久免费观看完整版 | 成人午夜免费福利 | 精品黄色在线观看 | 欧美精品久久久久 | 99视频在线观看视频 | 天天射夜夜爽 | 国产无套精品久久久久久 | 91九色porny在线 | 久久av在线 | 国产91精品一区二区麻豆网站 | 午夜国产福利在线观看 | 午夜在线免费视频 | 黄色在线免费观看网站 | 91人人视频在线观看 | a√天堂中文在线 | 天天干天天做天天操 | 国产精品中文字幕av | 国产一级黄色免费看 | 99久久精品免费视频 | 日韩av播放在线 | 91伊人| 欧美在线观看禁18 | 成人91在线 | 精品国产一区二区三区蜜臀 | 美女搞黄国产视频网站 | 999国产在线 | 亚洲综合欧美激情 | 中文字幕91 | 91精品视频免费在线观看 | 亚洲精品久久久蜜桃 | 亚洲精选视频在线 | 久久香蕉电影网 | 视频成人 | 欧美成年人在线视频 | 在线观看91久久久久久 | 国产看片网站 | 中文字幕在线观看三区 | 九九精品久久久 | 91秒拍国产福利一区 | 日日干夜夜操视频 | 欧美日韩国产一区二区在线观看 | www五月天 | 免费观看的黄色 | 一区二区三区四区五区在线 | 超碰人人在线 | 精品国产免费一区二区三区五区 | 亚洲色图激情文学 | 激情视频一区二区 | 97人人模人人爽人人喊网 | 亚欧日韩av| 日韩在线免费电影 | 国产在线精品一区二区 | 又黄又刺激| 超碰人人超 | 中日韩免费视频 | 欧洲黄色片 | 狠狠色丁香婷婷综合视频 | 欧亚日韩精品一区二区在线 | 日韩一区二区在线免费观看 | 欧美精品在线观看免费 | 日韩免费高清在线 | 天天操天天插 | 精品一区二区电影 | 91av免费看 | 香蕉久久久久 | 亚洲 中文 在线 精品 | 天天爱天天插 | 国产一级二级三级视频 | 特级黄色片免费看 | 97超碰人人模人人人爽人人爱 | 伊人资源视频在线 | 亚洲人在线7777777精品 | 九九九九精品九九九九 | 国产视频在线观看一区二区 | 国产成人在线观看免费 | 精品国产一区二区三区男人吃奶 | 国产一二区在线观看 | av在线免费观看黄 | 欧美一级高清片 | 国产拍揄自揄精品视频麻豆 | 免费日韩 精品中文字幕视频在线 | 国产精品久久久久久久久久三级 | 热久久免费视频精品 | 手机av在线网站 | av在线超碰 | 国产亚洲永久域名 | 丁香花中文字幕 | 亚洲影院国产 | 三级黄色免费片 | 亚洲精品视频在线观看免费视频 | 99久久99久久精品国产片 | 久久久综合九色合综国产精品 | 国产精品欧美久久久久三级 | 久久久久久国产精品免费 | 黄色大片日本免费大片 | 久久精品导航 | 久操视频在线观看 | 日韩精品最新在线观看 | 亚洲成年片 | 免费三级在线 | 国产精品免费大片视频 | 国产精品大片在线观看 | 欧美日韩一区二区久久 | 日韩欧美一区二区在线 | av中文电影 | 日韩av女优视频 | 91手机电视| 99在线观看免费视频精品观看 | 亚洲精选视频在线 | av成人在线播放 | 久久人人爽人人爽人人片 | 久久首页 | 国产最新在线观看 | 国产成人精品免高潮在线观看 | 日韩中文字幕在线观看 | 国产成人精品久久二区二区 | 中文字幕日韩电影 | 中文字幕第 | 日韩av电影中文字幕在线观看 | 日韩美在线观看 | 欧美精品中文字幕亚洲专区 | 精品999| 狠狠色丁香婷婷综合欧美 | 91av视频在线观看 | 麻豆系列在线观看 | 久久人人97超碰国产公开结果 | 99久久精品久久久久久动态片 | 国产一区二区三区免费观看视频 | 国产女教师精品久久av | 久久久久久国产精品 | 久久99爱视频 | 91精品国产麻豆 | av福利在线导航 | 午夜精品久久久久久久99 | 99精品国产视频 | 中文字幕黄色av | 中文av网站 | 欧美婷婷色 | 全久久久久久久久久久电影 | 黄色av网站在线观看免费 | 日韩精品久久久免费观看夜色 | 国产91精品高清一区二区三区 | 国产伦理一区二区三区 | 亚洲最快最全在线视频 | 亚洲男模gay裸体gay | 四虎影视精品 | 成人a在线观看高清电影 | 伊人久久在线观看 | 久久6精品 | 久久99精品国产 | 天天综合入口 | 色.com| 亚洲国产一区二区精品专区 | 国产精品ⅴa有声小说 | 999ZYZ玖玖资源站永久 | 色综合久久久久久久 | 欧美精品久久久久性色 | 欧美人操人 | 在线午夜 | 日韩欧美高清在线观看 | 日韩在线观看av | 久久久国产视频 | 99久热精品 | 国产91成人 | 99精品免费久久久久久日本 | 97成人资源| 免费三级黄色片 | 麻豆一区在线观看 | 久久精品电影院 | 亚洲最大的av网站 | 久久精品1区2区 | 中文字幕免费观看 | 99视频在线免费看 | 六月天色婷婷 | 亚洲成人免费在线观看 | 狠狠干婷婷 | 国产第一福利网 | 亚洲综合视频在线 | 特级黄色一级 | 丁香激情视频 | 成人精品久久 | 亚洲综合在线五月天 | 国产成人在线免费观看 | 99热国产在线 | 久久精品视频2 | 日日爱影视 | 中文在线字幕免费观看 | 久久久久亚洲精品 | 国产一级黄色电影 | 在线观看免费黄视频 | 99久久99久久免费精品蜜臀 | 天天舔天天射天天操 | 成人国产亚洲 | 亚洲免费婷婷 |