久久伊人一区二区三区四区-久久伊人影视-久久伊人影院-久久伊人中文字幕-亚洲成在人色婷婷-亚洲大成色www永久网

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 超全!Python圖形界面框架PyQt5使用指南

超全!Python圖形界面框架PyQt5使用指南

來源:千鋒教育
發布人:syq
時間: 2023-01-07 10:08:00 1673057280

  使用Python開發圖形界面的軟件其實并不多,相對于GUI界面,可能Web方式的應用更受人歡迎。但對于像我一樣對其他編程語言比如C#或WPF并不熟悉的人來說,未必不是一個好的工具。

Python圖形界面框架PyQt5使用

  常見GUI框架

  PyQt5:Qt是一個跨平臺的 C++圖形用戶界面庫。QT一度被諾基亞擁,后出售給芬蘭的軟件公司Digia Oyj。PyQt5是基于Digia公司Qt5的Python接口,由一組Python模塊構成。PyQt5本身擁有超過620個類和6000函數及方法。在可以運行于多個平臺,包括:Unix, Windows, and Mac OS。

  Pyside6:Pyside是QT公司官方提供的Python包,上一版本為Pyside2,對應的是QT5,最新版命名規則進行了調整,更改為Pyside6,對應的是QT6版本。由于官方出品的比較看好,缺點是發布比較晚,網上的資料沒有PyQt5多。

  Tkinter:Python內置的GUI框架,使用TCL實現,Python中內嵌了TCL解釋器,使用它的時候不用安裝額外的擴展包,直接import,跨平臺。不足之處在于UI布局全靠代碼實現,只有15種常用部件,顯示效果簡陋。

  PySimpleGUI:PySimpleGUI 是 Tkinter 一層包裝。使用 PySimpleGUI 實現自定義 GUI 所需的代碼量要比使用 Tkinter 直接編寫相同的 GUI 要少得多。

  WxPython:wxPython是Python語言對流行的wxWidgets跨平臺GUI工具庫的綁定。用得比較廣泛,跨平臺,C++編寫,文檔少,用戶可能就需要根據編程內容對不同平臺中的GUI代碼做一些調整。遇到問題不好解決,代碼布局控件,不直觀。

  Wax:基于wxPython ,為克服wxPython的問題而制作的一個包。

  Kivy:主要針對多點觸控程序,智能手機平板等,也可以在沒有觸屏功能的系統上,全平臺支持(Windows, Linux, Mac OS X, Android and iOS.)使用Python和cython編寫,中文支持差,需要自己下載中文庫并且制定路徑。

  BeeWare:Write once. Deploy everywhere.需要與Kivy配合使用。

  Toga:一個使用Python開發原生APP的GUI工具包。Toga由一個具有共享接口的基礎組件庫組成,以簡化與平臺無關的GUI開發。Toga適用于Mac OS、Windows、Linux(GTK)以及Android和iOS等移動平臺。

  Eel:一個輕量的 Python 庫,用于制作簡單的類似于 Electron(但是比它更輕量) 的離線 HTML/JS GUI 應用程序,并具有對 Python 功能(capabilities)和庫的完全訪問權限。

  Flexx:一個純 Python 工具包,用來創建圖形化界面應用程序。其使用 Web 技術進行界面的渲染。你可以用 Flexx 來創建桌面應用,同時也可以導出一個應用到獨立的 HTML 文檔。因為使用純 Python 開發,所以 Flexx 是跨平臺的。只需要有 Python 和瀏覽器就可以運行。

  pywebview:是圍繞 webview 組件的輕量型跨平臺包裝器(wrapper),它允許在其自己的本機 GUI 窗口中顯示 HTML 內容。它使您可以在桌面應用程序中使用 Web 技術,同時盡最大可能隱藏使用瀏覽器構建GUI的事實。

  enaml:一種能夠讓你用最小的努力就可以實現高質量GUI界面的的Python框架,也是一種獨特的編程語言。enaml將聲明性語言與基于約束的布局系統結合在一起,使用戶可以輕松地定義靈活布局的UI。enaml應用程序可以在任何支持Python和Qt的平臺上運行。

  個人想法:太多學不完,先學PyQt5,原因是資料多,學有余力再學pyside6,最后看下PySimpleGUI,看能否解決一些簡單問題。

  PyQt5簡介

  PyQt是Qt框架的Python語言實現,由Riverbank Computing開發,是最強大的GUI庫之一。PyQt提供了一個設計良好的窗口控件集合,每一個PyQt控件都對應一個Qt控件,因此PyQt的API接口與Qt的API接口很接近,但PyQt不再使用QMake系統和Q_OBJECT宏。

  PyQt5提供GPL版和商業版證書,自由開發者可以使用免費的GPL許可,如果需要將PyQt用于商業應用,則必須購買商業許可。

  PyQt5特性如下:

  基于高性能的Qt的GUI控件集。

  能夠跨平臺運行在Linux、Window和Mac OS系統上。

  使用信號槽機制進行通信。

  對Qt庫進行完全封裝。

  可以使用成熟的IDE進行界面設計,并自動生成可執行的Python代碼。

  提供一整套種類齊全的窗口控件。

  PyQt5是由一系列Python模塊組成,有超過620個類,6000個函數和方法,主要模塊如下:

  QtCore:包含了核心的非 GUI 的功能。主要和時間、文件與文件夾、各種數據、流、URLs、mime 類文件、進程與線程一起使用。

  QtGui:包含了窗口系統、事件處理、2D 圖像、基本繪畫、字體和文字類。

  QtWidgets:包含了一系列創建桌面應用的 UI 元素。

  QtMultimedia:包含了處理多媒體的內容和調用攝像頭 API 的類。

  QtBluetooth:包含了查找和連接藍牙的類。

  QtNetwork:包含了網絡編程的類,這些工具能讓 TCP/IP 和 UDP 開發變得更加方便和可靠。

  QtPositioning:包含了定位的類,可以使用衛星、WiFi 甚至文本。

  Enginio:包含了通過客戶端進入和管理 Qt Cloud 的類。

  QtWebSockets:包含了 WebSocket 協議的類。

  QtWebKit:包含了一個基 WebKit2 的 web 瀏覽器。

  QtWebKitWidgets:包含了基于 QtWidgets 的 WebKit1 的類。

  QtXml:包含了處理 xml 的類,提供了 SAX 和 DOM API 的工具。

  QtSvg:提供了顯示 SVG 內容的類,Scalable Vector Graphics (SVG) 是一種是一種基于可擴展標記語言 (XML),用于描述二維矢量圖形的圖形格式(這句話來自于維基百科)。

  QtSql:提供了處理數據庫的工具。

  QtTest:提供了測試 PyQt5 應用的工具。

  PyQt5的安裝

  由于后期要使用fbs進行打包,fbs對Python 3.7以后的版本可能存在兼容問題,所以我選擇了Python 3.6.8進行了整個環境的搭建。主要內容為:Python + PyCharm + PyQt5

  安裝PyQt5

pip install pyqt5

pip install pyqt5-tools

  其中pyqt5-tools為Qt Designer拖拽式的界面設計工具。安裝過程中可能會報如下錯誤:

qt5-tools 5.15.2.1.2 has requirement click~=7.0, but you'll have click 8.0.1 which is incompatible.

  解決方案:

pip install click~=7.0

  Qt Designer的配置

  Qt Designer 是通過拖拽的方式放置控件,并實時查看控件效果進行快速UI設計。

13

  整個畫面的構成:

  左側的“Widget Box”就是各種可以自由拖動的組件

  中間的“MainWindow – untitled”窗體就是畫布

  右上方的”Object Inspector”可以查看當前ui的結構

  右側中部的”Property Editor”可以設置當前選中組件的屬性

  右下方的”Resource Browser”可以添加各種素材,比如圖片,背景等等

  最終生成.ui文件(實質上是XML格式的文件),可直接使用,也可以通過pyuic5工具轉換成.py文件。

  QtDisigner配置

  在Pycharm中,依次打開 File – Settings – Tools – External Tools,點擊 + Create Tool,配置如下:

Name: QtDisigner

Program : D:\Program Files\Python36\Lib\site-packages\qt5_applications\Qt\bin\designer.exe # 請根據實際修改

Working directory: $FileDir$

  PyUIC配置

  PyUIC主要是把Qt Designer生成的.ui文件換成.py文件。

  在Pycharm中,依次打開 File – Settings – Tools – External Tools,點擊 + Create Tool,配置如下:

Name: PyUIC

Program : D:\Program Files\Python36\python.exe # 當前Python目錄,請根據實際修改

Arguments: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

Working directory: $FileDir$

  PyRCC配置

  PyRCC主要是把編寫的.qrc資源文件換成.py文件。在Pycharm中,依次打開 File – Settings – Tools – External Tools,點擊 + Create Tool,配置如下:

Name: PyRCC

Program: D:\Program Files\Python36\pyrcc5.exe # 當前rcc工具目錄,請根據實際修改

Arguments: $FileName$ -o $FileNameWithoutExtension$_rc.py

Working directory: $FileDir$

  PyQt5使用示例

  創建一個空白的界面:

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel

app = QApplication(sys.argv)

win = QMainWindow()

win.setGeometry(400, 400, 400, 300)

win.setWindowTitle("Pyqt5 Tutorial")

win.show()

sys.exit(app.exec_())

12

  其中:

  Qapplication():每個GUI都必須包含一個Qapplication,argv表示獲取命令行參數,如果不用獲取,則可以使用[]代替。

  QMainWindow():類似一個容器(窗口)用來包含按鈕、文本、輸入框等widgets。arg標識可以獲取命令行執行時的參數。

  SetGeometry是用來定義 QMainWindow() 窗口的尺寸, 語法:setGeometry(x, y, width, height ),其中x,y為屏幕上的坐標點。

  show():用來顯示窗口

  exit(app.exec_()):設置窗口一直運行指導使用關閉按鈕進行關閉

  PyQt5支持的常見Widgets有:

13

  從上到下,從左到右依次為:Qlabel、QcomboBox、QcheckBox、QradioButton、QpushButton、QtableWidget、QlineEdit、Qslider、QProgressBar

  對于使用Pyqt5設置文本內容,我們使用Qlabel:

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel

app = QApplication(sys.argv)

win = QMainWindow()

win.setGeometry(400, 400, 400, 300)

win.setWindowTitle("Pyqt5 Tutorial")

\# Label Text

label = QLabel(win)

label.resize(200, 100)

label.setText("Hi this is Pyqt5")

label.move(100, 100)

win.show()

sys.exit(app.exec_())

14

  按鈕與事件:

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton

def click():

    print("Hy Button is clicked!")

app = QApplication(sys.argv)

win = QMainWindow()

win.setGeometry(400, 400, 400, 300)

win.setWindowTitle("Pyqt5 Tutorial")

\# Button

button = QPushButton(win)

button.resize(200, 100)

button.setText("Hi! Click Me")

button.move(100, 100)

button.clicked.connect(click)

win.show()

sys.exit(app.exec_())

  button.clicked.connect() 在按鈕點擊后執行特定的事件。

  PyQt5實戰

  實戰項目:簡易的天氣查詢軟件

  1、使用Qt Designer設計一個界面

15

  用到的控件有Button, GroupBox, Label,ComboBox,TextEdit,同時定義了兩個按鈕queryBtn及clearBtn,分別用來查詢及清空天氣數據。我們需要綁定槽函數,方法如下:

  在Qt Designer右下角選擇 信號/槽編輯器,點擊+號新增

  分別選擇queryBtn及clearBtn,選擇信號 clicked(), 接收者 Dialog 及槽 accept(),(槽函數這里不知道如何定義,后期在代碼里再進行修改)

  以上完成后保存為Weather.ui文件。

  2、轉換.ui文件為.py文件

  PyQt5支持直接使用.ui文件:

import sys

from PyQt5 import QtWidgets, uic

app = QtWidgets.QApplication(sys.argv)

window = uic.loadUi("mainwindow.ui")

window.show()

app.exec()

  但是為了更好的自定義及修改上面的槽函數,可以使用External Tools – PyUIC,即可生成Weather.py,實際運行命令如下:

D:\Program Files\Python36\python.exe -m PyQt5.uic.pyuic Weather.ui -o Weather.py

  其中,我們需要把兩個按鈕綁定的槽函數:

\# self.queryBtn.clicked.connect(Dialog.accept)

\# self.clearBtn.clicked.connect(Dialog.accept)

\# 修改為:

self.queryBtn.clicked.connect(Dialog.queryWeather)

self.clearBtn.clicked.connect(Dialog.clearText)

  最終的Weather.py內容如下:

\# -*- coding: utf-8 -*-

\# Form implementation generated from reading ui file 'Weather.ui'

\#

\# Created by: PyQt5 UI code generator 5.15.4

\#

\# WARNING: Any manual changes made to this file will be lost when pyuic5 is

\# run again.  Do not edit this file unless you know what you are doing.

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):

    def setupUi(self, Dialog):

        Dialog.setObjectName("Dialog")

        Dialog.resize(600, 600)

        self.groupBox = QtWidgets.QGroupBox(Dialog)

        self.groupBox.setGeometry(QtCore.QRect(30, 20, 551, 511))

        self.groupBox.setObjectName("groupBox")

        self.label_2 = QtWidgets.QLabel(self.groupBox)

        self.label_2.setGeometry(QtCore.QRect(20, 30, 31, 16))

        self.label_2.setObjectName("label_2")

        self.comboBox = QtWidgets.QComboBox(self.groupBox)

        self.comboBox.setGeometry(QtCore.QRect(70, 30, 87, 22))

        self.comboBox.setObjectName("comboBox")

        self.comboBox.addItem("")

        self.comboBox.addItem("")

        self.comboBox.addItem("")

        self.textEdit = QtWidgets.QTextEdit(self.groupBox)

        self.textEdit.setGeometry(QtCore.QRect(20, 70, 491, 411))

        self.textEdit.setObjectName("textEdit")

        self.queryBtn = QtWidgets.QPushButton(Dialog)

        self.queryBtn.setGeometry(QtCore.QRect(490, 560, 93, 28))

        self.queryBtn.setObjectName("queryBtn")

        self.clearBtn = QtWidgets.QPushButton(Dialog)

        self.clearBtn.setGeometry(QtCore.QRect(30, 560, 93, 28))

        self.clearBtn.setObjectName("clearBtn")

        self.retranslateUi(Dialog)

        self.clearBtn.clicked.connect(Dialog.clearText)

        self.queryBtn.clicked.connect(Dialog.queryWeather)

        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):

        _translate = QtCore.QCoreApplication.translate

        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))

        self.groupBox.setTitle(_translate("Dialog", "城市天氣預報"))

        self.label_2.setText(_translate("Dialog", "城市"))

        self.comboBox.setItemText(0, _translate("Dialog", "北京"))

        self.comboBox.setItemText(1, _translate("Dialog", "蘇州"))

        self.comboBox.setItemText(2, _translate("Dialog", "上海"))

        self.queryBtn.setText(_translate("Dialog", "查詢"))

        self.clearBtn.setText(_translate("Dialog", "清空"))

  3、調用MainDialog

  在MainDialog中調用界面類Ui_Dialog,然后在其中中添加查詢天氣的業務邏輯代碼,這樣就做到了界面顯示和業務邏輯的分離。新增demo.py文件, 在MainDialog類中定義了兩個槽函數queryWeather()和clearText(),以便在界面文件Weather.ui中定義的兩個按鈕(queryBtn 和clearBtn) 觸發clicked 信號與這兩個槽函數進行綁定。

  完整代碼如下:

import sys

import Weather

from PyQt5.QtWidgets import QApplication, QDialog

import requests

class MainDialog(QDialog):

    def __init__(self, parent=None):

        super(QDialog, self).__init__(parent)

        self.ui = Weather.Ui_Dialog()

        self.ui.setupUi(self)

    def queryWeather(self):

        cityName = self.ui.comboBox.currentText()

        cityCode = self.getCode(cityName)

        r = requests.get(

            "https://restapi.amap.com/v3/weather/weatherInfo?key=f4fd5b287b6d7d51a3c60fee24e42002&city={}".format(

                cityCode))

        if r.status_code == 200:

            data = r.json()['lives'][0]

            weatherMsg = '城市:{}\n天氣:{}\n溫度:{}\n風向:{}\n風力:{}\n濕度:{}\n發布時間:{}\n'.format(

                data['city'],

                data['weather'],

                data['temperature'],

                data['winddirection'],

                data['windpower'],

                data['humidity'],

                data['reporttime'],

            )

        else:

            weatherMsg = '天氣查詢失敗,請稍后再試!'

        self.ui.textEdit.setText(weatherMsg)

    def getCode(self, cityName):

        cityDict = {"北京": "110000",

                    "蘇州": "320500",

                    "上海": "310000"}

        **return** cityDict.get(cityName, '101010100')

    def clearText(self):

        self.ui.textEdit.clear()

if __name__ == '__main__':

    myapp = QApplication(sys.argv)

    myDlg = MainDialog()

    myDlg.show()

    sys.exit(myapp.exec_())

  運行demo.py并執行查詢后的效果:

16

  4、將代碼打包成exe文件

  將.py文件打包成可執行的exe在Python中稱為freezing,常用的工具有:PyInstaller, py2exe, cx_Freeze, bbfreze, py2app等。功能對比:

17

  py2exe:軟件更新已經不活躍,因此也就略過。

  pyinstaller:明確支持win8、win10、理論上支持win7,,支持apple Macos, linux。pyinsaller可以打包成文件夾形式內含exe入口執行文件的形式,也可以是一個單獨的exe文件。

  fbs:基于PyInstaller,使用起來更加方便

  這里選擇了fbs來打包。fbs的安裝方法:

pip install fbs

  使用方法,在命令行中輸入:

fbs startproject

  執行完成后需要輸入一些APP的名稱等。完成后會生成如下目錄:

18

  將剛才編寫的PyQt5的代碼(demo.py和Weather.py)拖到src/main/python文件夾下,刪除原有的main.py,并將demo.py修改為main.py。然后打開 main.py,在文件頭部添加如下代碼:

from fbs_runtime.application_context.PyQt5 import ApplicationContext
```
完成后執行:
```
fbs freeze
```
即可實現打包。生成的exe可執行文件在\target\MyApp文件下。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
開班信息
北京校區
  • 北京校區
  • 大連校區
  • 廣州校區
  • 成都校區
  • 杭州校區
  • 長沙校區
  • 合肥校區
  • 南京校區
  • 上海校區
  • 深圳校區
  • 武漢校區
  • 鄭州校區
  • 西安校區
  • 青島校區
  • 重慶校區
  • 太原校區
  • 沈陽校區
  • 南昌校區
  • 哈爾濱校區
主站蜘蛛池模板: 一个上面一个下面嘴巴| 国产猛烈高潮尖叫视频免费| 国产麻花豆剧传媒精品MV在线| 公车掀起老师裙子进入在线| 脱了老师内裤猛烈进入的软件| 在线 | 一区二区三区| 拔萝卜影视剧免费观看| 一面亲上边一面膜下边56| 国产9 1在线 | 欧洲| 成人欧美激情亚洲日韩蜜臀| 亚洲AV无码专区在线电影APP| 宝贝儿感受到它对你的爱了吗小说 | 国99久9在线 | 免费| 国产成人精品视频ⅤA秋霞影院 | 琪琪777午夜理论片在线观看播| 又黄又硬又湿又刺激视频免费| 无码丰满人妻熟妇区| 国内精品国内精品自线在拍| 亚洲人亚洲精品成人网站| 国产午夜亚洲精品理论片八戒| 制服丝袜AV无码专区完整版| 国产午夜亚洲精品国产成人| 日本高清视频色WWWWWW色| 岳丰满多毛的大隂户老太的介绍 | 少妇特黄Av一区二区三区| 国产9 1在线 | 欧洲| 极品无码AV国模在线观看| 色悠久久久久综合先锋影音下载 | 欧美黑人男士和白人美女a级黄片视频在线播放 | 日韩精品无码一本二本三本| 亚洲AV无码国产精品色午友情链| 肥臀浪妇太爽了快点再快点| 自拍亚洲综合在线精品| 亚洲精品无码成人| 久久精品亚洲乱码伦伦中文| 丰满圆润大胸在线| 日本熟妇人妻XXXXX野外呻| 奇米影视7777久久精品| 国产成人精品自在钱拍| 亚洲无人区码一码二码三码的含义| 国产男女猛烈无遮挡免费视频| 国产精品丝袜高跟鞋| 无人区码一码二码三码在线 | 中文字幕乱码一区二区三区免费 | 任你躁X7X7X7X7在线观看| 差差漫画网页登录页面弹窗| 少妇特殊按摩高潮爽翻天| 精品亚洲国产成人AV制服| 丰满的女房东6剧情| 哦┅┅快┅┅用力啊┅┅村妇 | 欧美亚洲熟妇少妇性A爱| 办公室扒开奶罩揉吮奶头AV| 人人澡人人妻人人爽人人蜜桃麻豆| 亚洲妇女无套内射精| 欧美free叉叉叉叉极品少妇| 精品人妻一区二区三区四区在线| 精品少妇一区二区| 精品无码成人片一区二区| 久久寂寞少妇成人内射| 女人双腿搬开让男人桶| А√天堂 地址 在线| 内射射满骚B含着小说| 女厕脱裤撒尿大全视频| 久久综合九色综合欧美婷婷| 欧洲免费无码视频在线| 好男人好资源在线影视官网| 岳又紧又嫩又多水好爽| 国语第一次处破女| 亚洲A级成人无码网站| 色视频WWW在线播放国产人成| 午夜私人电影院在线观看| 日本熟妇厨房XXXXX乱| 女人扒开的小泬高潮喷水小说| 欧美性猛交XXXX乱大交视频| 一本色道久久HEZYO无码| 欧美日韩人妻一区二区| 综合无码精品人妻一区二区三区| 少妇被躁C至高潮HD| 久久精品无码一区二区小草| 无码人妻精品一区二区三区免费| 国产极品粉嫩馒头一线天AV| 日本免费人成视频在线观看| 伊人久久大香线蕉AV成人| 精品一区二区三区在线播放视频 | 草草最新发地布地址①·| 色哟哟网站在线观看入口| 在线看AV片的网站| 从厨房到餐桌JOYCE| 国产精品欧美久久久久无广告| 熟女少妇内射日韩亚洲 | 男人GAY自慰吞精网站| 我和岳乱妇三级高清电影| 亚洲精品456在线播放| 成午夜福利人试看120秒| 宝贝儿感受到它对你的爱了吗小说 | 日韩精品专区在线影院重磅| 欧美乱码伦视频免费| 久久人妻无码一区二区三区AV| 天天影视网色香欲综合网| 欧美性色欧美A在线播放| 欧美 亚洲 国产 日韩 综AⅤ| 狂野AV人人澡人人添| 狠狠躁天天躁中文字幕| 无码人妻精品一区二区三区99不卡| 幼儿稀缺区超清幼儿做的网站 | 天天爽夜夜爽人人爽一区二区| 色视频WWW在线播放国产人成 | 亚洲AV无码男人的天堂| 女人被躁到高潮嗷嗷叫游戏| 国产精品亚洲А∨无码播放麻豆 | 亚洲国产欧美在线人成最新| 内地性生生活影视大全| 亚洲人亚洲精品成人网站| 国产成人无码18禁午夜福利网址| 无码一区二区三区蜜桃| 国产成人综合久久精品| 娇妻强被迫伦姧惨叫 在线| 人妻无奈被迫屈辱1-9| 成人Α片免费视频在线观看| 粉嫩av一区二区精品爆乳| 久久久久久精品成人网站蜜臀| 无码中文字幕AV免费放DVD| 亚洲成在人线AV| 天天AV天天爽无码中文| 嫩草在线视频WWW免费看| 欧美性饥渴少妇XXXⅩOOOO| 日本熟妇人妻XXXXX野外呻| 人人爽人人操人人精品| 哦┅┅快┅┅用力啊┅┅在线观看| 亚洲AV无码专区亚洲猫咪| 我和子发生了性关系视频| 欧美午夜精品一区二区蜜桃| 国产精品成人VA在线播放| 成人女人爽到高潮的Av在线| 无码人妻精品一区二区三区免费看 | 欧美性猛交XXXX乱大交视频| 国产激情З∠视频一区二区| 日本熟妇人妻ⅩXXXXOO多毛| А√天堂网WWW在线搜索| 美女扒开腿让男人桶爽网站| 在线精品国产一区二区三区| 国产精品成人VA在线播放| 亲孑伦视频一区二区三区一| 野草高清视频免费| 成人午夜福利视频| 老师黑色丝袜被躁翻了AV| 日韩精品无码熟人妻视频| YELLOW在线观看| 成人年无码AV片在线观看| 国产成人精品综合久久久久性色| 久久久噜噜噜久噜久久| 免费的看片APP| 欧美精品色婷婷五月综合| 欧洲免费无码视频在线| 国产美女丝袜一级肛交蜜桃| 成年黄网站18禁免费观看一区| 私密按摩高潮熟女啪啪| 欧美乱码伦视频免费| 久久久久久精品免费无码 | 亚洲国产精品久久久久秋霞影院| 国内精品久久久久精品爽爽 | 国产精品国产三级国产AⅤ| 日本丰满护士爆乳XXXX无遮挡| 日本适合十八岁以上的护肤品一| 欧美人与牲动交XXXⅩ| 国产精品亚洲第一区焦香味| 亚洲AV永久无码天堂网毛片| 狂野AV人人澡人人添| 无码国内精品人妻少妇| 国产成人午夜在线视频A站| 小SB是不是想被C了| 国产精品久久久久久久9999| 日本XXX色视频| 东京热加勒比视频一区| 国产精品V欧美精品∨日韩| 乌克兰少妇XXXX做受野外| 啊哈~给我~啊(H)| 儿子比老公更大更硬朗| 国产成人精品综合久久久| 小SB是不是想被C了| 差差差很疼视频无掩丰富| 国产精品无码久久AV不卡| 久久人妻无码一区二区三区AV| 视频视频APP在线看| 私人影院家庭影院| 久久99精品久久久久久HB无码| 破了亲妺妺的处免费视频国产| 无码日韩做暖暖大全免费不卡| WWW夜片内射视频日韩精品成人| 国产激情无码一区二区APP| 成人无码无遮挡很H在线播放 | 欧美成人性生活视频| 无码人妻精品一区二区三区66 | 每个世界都被主角睡来睡去可乐饼| 小雪被老汉玩遍各种方式| 无码人妻精品一区二区三| 国产裸拍裸体女网站链接在线观看| 国内精品久久久人妻中文字幕| 成人看片黄APP免费看软件| 成人无码AⅤ在线播放| 天堂√中文最新版在线中文| 国产精品日本亚洲欧美| 人喾交性专区免费看| 成人无码区免费∨| 国产成人精品自在钱拍| 久久久久久成人毛片免费看| 国产成人精品久久综合| 久久久久久九九精品久| 免费无码黄动漫在线观看| 亚洲AV无码专区国产乱码DVD| 国产粉嫩馒头无套内在线观看免费| 亚洲伊人成无码综合影院| 饭桌上故意张开腿让公在线观| 欧洲免费无码视频在线| 久久精品影视免费观看| 国内精品久久久人妻中文字幕| 青青国产揄拍视频| 国产成人无码AV| 国产精品人人做人人爽人人添| 国产亚洲精品无码成人| 黑人巨大进入白人美女视频| 国产成人精品午夜福利APP色多 | 蜜桃传媒在线观看免费版7| 午夜成人亚洲理论片在线观看| 草莓视频CAOMEI888| 私密按摩高潮熟女啪啪| 久久夜色精品国产噜噜噜亚洲AV| 天堂SV在线最新版在线| 成为人视频人的APP有哪些软件| 亚洲AV人无码激艳猛片服务器| 无码AV免费一区二区三区四区| 女人大胆张开荫道口∞| 成 人 黄 色 网 站 视 频| 强被迫伦姧在线观看中文版| 丰满乳乱亲伦小说| 美女张开腿黄网站免费| 亚洲欧美性爱视频| 亚洲AV无码专区国产乱码不卡| 久久精品女人天堂AV免费观看| 草草永久地址发布页①| 嫩草研究院久久久精品| 日本极品人妻VIDEOSSEX| 亚洲AV无码一区二区三区观看| 久久国产加勒比精品无码| 日本最新高清一区二区三| 无码AV免费一区二区三区四区| 永久免费观看美女裸体的网站 | 真实国产老熟女粗口对白| 欧美综合天天夜夜久久| 日本狂喷奶水在线播放212| 无码少妇一区二区三区免费| 亚洲AV无码精品无码麻豆| 伊人久久精品无码麻豆一区| 一区二区av在线| 日本国产网曝视频在线观看| 内地性生生活影视大全| 丰满少妇A级毛片| 亚洲精品无码成人| 护士交换粗吟配乱大交| 中文字幕AV日韩精品一区二区| 亚洲成A人V在线蜜臀| 哦┅┅快┅┅用力啊熟妇| 成年女人午夜毛片免费视频| 西方37大但人文艺术任汾A级| 亚洲乱码精品久久久久..| 久久99精品久久久久久HB无码| 成人精品一区二区久久久| 久久久久国色AV免费观看性色 | 办公室紧身女教师| 欧美xxxxx久久短视频| WW欧日韩视频高清在线| 精品久久久久久国产潘金莲 | 强制高潮18XXXXHD日韩| 国产成人8X视频网站| 黑人又大又粗又长欧美网站| 日韩精品一区二区三区中文| 在厨房被C到高潮A毛片奶水| 疯狂做受XXXX国产| 国产精品边做奶水狂喷无码| 久久久久久久久久久精品尤物| 无码一区二区三区AⅤ免费麻豆| 国产又猛又黄又爽| 国产欧美日韩专区发布| 女人丝不挂的正面裸体| 国产精品无码一区二区三区在| 内射人妻无码色AV无码| 狠狠色狠狠色综合久久| 国产精品JIZZ视频| 日韩内射美女人妻一区二区三区| 无码一区在线视频| 国产精品爽爽V在线观看无码| 成 人 黄 色 网 站 视 频| 亚欧洲精品在线视频免费观看| 亚洲AV永久无码精品秋霞电影秋| 欧美大屁股XXXX高跟欧美黑人| 欧美人与ZOZOXXXX视频| 抖抈短视频APP下载| 人妻少妇精品无码专区| 啊哈~给我~啊(H)| 国产在线孕妇孕交| 欧洲熟妇色XXXXX老妇| 在线看片无码永久免费视频 | 日韩一区无码视频| 成人无码区免费AⅤ片WWW软件| 日本多人强伦姧人妻完整版| 大荫蒂又大又长又硬又紧| 人妻中文字幕制服丝袜| 色综合AV综合无码综合网站| 成 人 黄 色 网站 S色| 国产公妇仑乱在线观看| 国产精品JIZZ视频| 成年无码AV片在线| 亚洲成A人片77777国产| 无码精品人妻一区二区三区免费看| 国产成人综合久久精品推最新| 久久久久久精品人妻免费网站| 欧美精品乱码视频一二专区| 男男暴菊GAY无套网站| 国产免费破外女真实出血视频| 青梅被从小摸到大H补课1视频| 五十老熟妇乱子伦免费观看| 区二区三区国产精华液区别大吗| 午夜无码伦费影视在线观看| 欧美电影在线观看| 成人精品一区二区三区中文字幕| 亚洲欧美性爱视频| 内地丰满浓密老熟女露脸对白| 国产精品盗摄!偷窥盗摄| 饭桌上故意张开腿让公在线观看| 亚洲成在人线AV| 成人美女黄网站18禁免费| 少妇特黄Av一区二区三区| 高清拍拍拍无挡国产精品 | 秋霞久久国产精品电影院| 朋友人妻少妇精品系列| 伊人久久大香线蕉AV网| 欧美男生射精高潮视频网站| 粗大从后面狠狠贯穿H| 日本三级强伦姧护士HD| 亚洲AV无码久久精品蜜桃播放 | 真实的国产乱ⅩXXX66小说| 色天使亚洲综合一区二区| 亚洲AV无码国产在丝袜APP| 纯肉无遮挡H肉动漫在线观看国产 纯肉无遮挡H肉动漫在线观看网址 | 亚洲AV中文无码乱人伦在线观看 | 午夜亚洲国产理论片亚洲2020 | 亚洲色大成网站WWW永久一区| 欧美综合自拍亚洲图久青草| 午夜成人亚洲理论片在线观看| 在线精品自偷自拍无码中文| Y1111111少妇影院| 热RE99久久精品国产99热| 污污污污污污网站| 内射后入在线观看一区| 国产乱人伦偷精品视频免| 成人欧美一区二区三区视频| 亚洲AV无码一区二区三区观看 | 日韩少妇内射免费播放| 少妇特殊按摩高潮爽翻天| 久久精品国产亚洲AV香蕉| 国产精品VIDEOSSEX久久发布| 伊人色综合一区二区三区| 日本丰满熟妇BBXBBXHD| 国产又色又刺激高潮免费视频试看 | 玩弄丰满少妇XXXXX| 国产亚洲午夜高清国产拍精品| 国产精品美女久久久| 无码口爆内射颜射后入| 国产又大又黑又粗免费视频| 成码无人AV片在线电影无下载| 免费AV大片在线观看入口| 亚洲AV无码一区二区密桃精品| 日产精品久久久一区二区| 亚洲熟妇色自偷自拍另类| 国产成人精品一区二三区在线观看| 午夜亚洲国产理论片亚洲2020| 国模GOGO无码人体啪啪| 国内精品卡一卡二卡三| 久久精品囯产精品亚洲| 欧美乱人伦人妻中文字幕| 吸头AXYGEN日本| 日本乱熟人妻精品中文字幕| 天天爽夜夜爽人人爽QC| 人妻丰满熟妇av无码区HD| 人妻精油按摩BD高清中文字幕| 亚洲妇女无套内射精| 少妇CHINA中国人妻VIDE| 免费A级毛片在线播放不收费| 日本熟妇人妻XXXXX中文| 欧美大屁股XXXX高跟欧美黑人| 人人妻人人澡人人爽精品欧美| 欧美成人精品第一区二区三区| 激情偷乱人伦小说视频在线| 国产高清在线A视频大全| 差差差软件大全APP推荐免费| 天天玩天天玩天天玩| 精品熟女少妇AV免费久久| 无码熟妇人妻AV在线一| 妇女AV中文精品字幕XXX| 少妇人妻精品一区二区三区| 国产农村乱人伦精品视频| 无码精品黑人一区二区三区| 国产精品成人网站| 欧美综合天天夜夜久久| 中国丰满熟妇XXXX| 国产AV成人一区二区三区高清| 欧美人与禽ZOZZO| 漂亮人妻被强中文字幕久久| 性色AⅤ一区二区三区天美传媒| 国产AⅤ无码专区亚洲AV综合网|