黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

python GUI庫圖形界面開發之PyQt5信號與槽機制、自定義信號基礎介紹

瀏覽:16日期:2022-08-06 13:31:12

信號和槽機制是 QT 的核心機制,要精通 QT 編程就必須對信號和槽有所了解。信號和槽是一種高級接口,應用于對象之間的通信,它是 QT 的核心特性,也是 QT 區別于其它工具包的重要地方。

在linux、windows等 GUI 工具包中,GUI組件都會注冊回調函數用于處理組件所觸發的動作,通常是注冊對應的函數的函數指針。在之前關于Button的文章中提到了信號與槽的機制的使用,通過該機制可以很好的將組件的信號(如button的clocked、toggled、pressed等)和處理該信號的槽關聯起來。通過 信號與槽機制,能夠讓我們很簡潔和快速的來完成相關的功能。

信號和槽是用來在對象間傳遞數據的方法:當一個特定事件發生的時候,signal會被emit出來,slot調用是用來響應相應的signal的。Qt中對象已經包含了許多預定義的 signal(基本組件都有各自特有的預定義的信號),根據使用的場景我們可以添加新的signal。Qt的對象中已經包含了許多預定義的槽函數,但我們也根據使用的場景添加新的槽函數。

信號

當對象的狀態發生改變的時候,信號就由該對象發射 (emit) 出去。當一個信號被發射(emit)時候,與其關聯的槽函數被立刻執行。其中該對象只負責發送信號,發射該信號的對象并不知道是那個對象在接收這個信號。這樣保證了對象與對象之間的低耦合。

如果存在信號和多個槽函數相關聯的時候,當信號被發射時,這些槽的執行順序將會是隨機的、不確定的。

用于接受信號,而且槽只是普通的對象成員函數。當和槽連接的信號被發射時,槽會被調用。一個槽并不知道是否有任何信號與自己相連接。

信號和槽的綁定

通過調用 QObject 對象的 connect 函數來將某個對象的信號與另外一個對象的槽函數相關聯,這樣當發射者發射信號時,接收者的槽函數將被調用。該函數的定義如下::

connect(slot[, type=PyQt5.QtCore.Qt.AutoConnection[, no_receiver_check=False]])

Parameters: 

slot ? the slot to connect to, either a Python callable or another bound signal.

type ? the type of the connection to make.

no_receiver_check ? suppress the check that the underlying C++ receiver instance still exists and deliver the signal anyway.

當信號與槽沒有必要繼續保持關聯時,我們可以使用 disconnect 函數來斷開連接。其定義如下:

disconnect([slot])

Parameters: slot ? the optional slot to disconnect from, either a Python callable or another bound signal. If it is omitted then all slots connected to the signal are disconnected.

信號和槽的特點1、一個信號可以連接到多個槽;

當信號發出后,槽函數都會被調用,但是調用的順序是隨機的,不確定的。

self.slider.valueChanged.connect(self.pBar.setValue) 

self.slider.valueChanged.connect(self.lcdNumber.display)

QSlider數據的變化同時綁定在setValue()和display()兩個槽上。

2、多個信號可以連接到同一個槽;

其中任何一個信號發出,槽函數都會被執行。

self.buttonOn.clicked.connect(self.showMessage)

self.buttonOff.clicked.connect(self.showMessage)

showMessage()同時綁定在兩個button的clicked信號上

3、信號的參數可以是任何的Python類型;

如list,dict等python獨有的類型。自定義信號的時候舉例說明。

4、信號和槽的連接可以被移除;

比如斷開某個特定信號的關聯。

self.buttonOn.clicked.connect(self.showMessage)

5、信號可以和另外一個信號進行關聯;

第一個信號發出后,第二個信號也同時發送。比如關閉系統的信號發出之后,同時會發出保存數據的信號。

代碼示例:

關于信號和槽的式樣代碼如下:

#-*- coding:utf-8 -*-’’’Signal & Slot’’’__author__ = ’Tony Zhu’import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import (QWidget, QLCDNumber, QSlider,QGridLayout,QLabel,QHBoxLayout, QGroupBox, QVBoxLayout, QApplication,QProgressBar,QPushButton,QMessageBox)class SignalSlot(QWidget): def __init__(self): super(SignalSlot,self).__init__() self.initUI() def initUI(self): self.controlsGroup = QGroupBox('運行樣本') self.lcdNumber = QLCDNumber(self) self.slider = QSlider(Qt.Horizontal, self) self.pBar = QProgressBar(self) vbox = QVBoxLayout() vbox.addWidget(self.pBar) vbox.addWidget(self.lcdNumber) vbox.addWidget(self.slider) self.controlsGroup.setLayout(vbox) controlsLayout = QGridLayout() self.label1 = QLabel('保存狀態:') self.saveLabel = QLabel() self.label2 = QLabel('運行狀態:') self.runLabel = QLabel() self.buttonSave = QPushButton('保存') self.buttonRun = QPushButton('運行') self.buttonStop = QPushButton('停止') self.buttonDisconnect = QPushButton('解除關聯') self.buttonConnect = QPushButton('綁定關聯') controlsLayout.addWidget(self.label1,0,0) controlsLayout.addWidget(self.saveLabel,0,1) controlsLayout.addWidget(self.label2,1,0) controlsLayout.addWidget(self.runLabel,1,1) controlsLayout.addWidget(self.buttonSave,2,0) controlsLayout.addWidget(self.buttonRun,2,1) controlsLayout.addWidget(self.buttonStop,2,2) controlsLayout.addWidget(self.buttonDisconnect,3,0) controlsLayout.addWidget(self.buttonConnect,3,1) layout = QHBoxLayout() layout.addWidget(self.controlsGroup) layout.addLayout(controlsLayout) self.setLayout(layout) self.buttonRun.clicked.connect(self.buttonSave.clicked) self.slider.valueChanged.connect(self.pBar.setValue) self.slider.valueChanged.connect(self.lcdNumber.display) self.buttonSave.clicked.connect(self.showMessage) self.buttonRun.clicked.connect(self.showMessage) self.buttonDisconnect.clicked.connect(self.unbindConnection) self.buttonConnect.clicked.connect(self.bindConnection) self.buttonStop.clicked.connect(self.stop) self.setGeometry(300, 500, 500, 180) self.setWindowTitle(’信號和槽’) def showMessage(self): if self.sender().text() == '保存': self.saveLabel.setText('Saved') elif self.sender().text() == '運行': self.saveLabel.setText('Saved') self.runLabel.setText('Running') def unbindConnection(self): self.slider.valueChanged.disconnect() def bindConnection(self): self.slider.valueChanged.connect(self.pBar.setValue) self.slider.valueChanged.connect(self.lcdNumber.display) def stop(self): self.saveLabel.setText('') self.runLabel.setText('')if __name__ == ’__main__’: app = QApplication(sys.argv) ex = SignalSlot() ex.show() sys.exit(app.exec_())

程序運行的結果:

python GUI庫圖形界面開發之PyQt5信號與槽機制、自定義信號基礎介紹

控件說明:

控件類型 控件名稱 作用 QLCDNumber lcdNumber 顯示slider滑動之后的數據 QProgressBar pBar 顯示slider滑動之后的數據(百分比數據) QSlider slider 滑動塊調整數據 QPushButton buttonSave 在saveLabel顯示保存的狀態”Saved” QPushButton buttonRun 在runLabel顯示運行的狀態”Running” QPushButton buttonDisconnect 解除slider.valueChanged信號的綁定 QPushButton buttonConnect 連接slider.valueChanged信號的綁定 QPushButton buttonStop 清除saveLabel和runLabel的信息

示例說明:

程序樣本運行的界面邏輯,先設定運行的程序樣本數量,然后先保存后運行的邏輯狀態。通過slider的滑動來改變progressBar和LCD的顯示數據;“保存”按鈕保存運行的樣本;“運行”按鈕運行程序樣本;“解除關聯”解除slider.valueChanged信號的綁定,此時slider的滑動,不會改變progressBar和LCD的顯示

示例說明:

L22~30:

self.controlsGroup = QGroupBox('運行樣本')self.lcdNumber = QLCDNumber(self)self.slider = QSlider(Qt.Horizontal, self)self.pBar = QProgressBar(self)vbox = QVBoxLayout()vbox.addWidget(self.pBar)vbox.addWidget(self.lcdNumber)vbox.addWidget(self.slider)self.controlsGroup.setLayout(vbox)

實例化一個QGroupBox,在其中添加QSlider,QProgressBar,QLCDNumber控件。

L32~41:

controlsLayout = QGridLayout()self.label1 = QLabel('保存狀態:').....self.buttonDisconnect = QPushButton('解除關聯')self.buttonConnect = QPushButton('綁定關聯')

實例化,界面中右半部分的控件。

L58~65:

self.buttonRun.clicked.connect(self.buttonSave.clicked)self.slider.valueChanged.connect(self.pBar.setValue)self.slider.valueChanged.connect(self.lcdNumber.display)self.buttonSave.clicked.connect(self.showMessage)self.buttonRun.clicked.connect(self.showMessage)self.buttonDisconnect.clicked.connect(self.unbindConnection)self.buttonConnect.clicked.connect(self.bindConnection)self.buttonStop.clicked.connect(self.stop)signal和slot進行綁定。1、一個信號綁定多個槽:

self.slider.valueChanged.connect(self.pBar.setValue)

self.slider.valueChanged.connect(self.lcdNumber.display)

slider控件的valueChanged信號,同時與QProgressBar的setValue(),QLCDNumber的display()槽函數綁定,當valueChanged信號觸發的時候,這兩個槽函數均會被調用。

2、多個信號綁定到一個槽:

self.buttonSave.clicked.connect(self.showMessage)

self.buttonRun.clicked.connect(self.showMessage)

buttonSave和buttonRun這兩個對象的clicked信號,同時綁定到showMessage()這個槽函數。無論哪一個信號被觸發,showMessage()這個槽函數均會被調用。

3、信號和槽的連接可以被移除:

self.buttonDisconnect.clicked.connect(self.unbindConnection)

當buttonDisconnect信號觸發之后,與其關聯的槽函數unbindConnection()中就會執行disconnect()方法,如下:

def unbindConnection(self):self.slider.valueChanged.disconnect()

其中執行disconnect()的時候可以指定解除與某個特定的slot槽的關聯,比如self.slider.valueChanged.disconnect(self.pBar.setValue),此時解除和QProgressBar的setValue()的關聯;或者不指定,在不指定slot的場景下這樣將解除和這個信號所有關聯的槽。

4、信號與信號的關聯:

self.buttonRun.clicked.connect(self.buttonSave.clicked)

在示例說明中提到,在運行之前要對樣本進行保存,所以為了保證運行的時候執行了保存的操作,所以將buttonRun.clicked信號和buttonSave.clicked信號關聯起來。

示例中在沒有執行“保存”(buttonSave)的時候,執行“運行”(buttonRun),此時由于兩個對象的clicked信號已經關聯,所以buttonSave的clicked同樣會執行。

PyQt5自定義信號

PyQt5已經自動定義了很多QT內建的信號。但是在實際的使用中為了靈活使用信號與槽機制,我們可以根據需要自定義signal。可以使用pyqtSignal()方法定義新的信號,新的信號作為類的屬性。

自定義signal說明:

pyqtSignal()方法原型(PyQt官網的定義):

PyQt5.QtCore.pyqtSignal(types[, name[, revision=0[, arguments=[]]]])

Create one or more overloaded unbound signals as a class attribute.

Parameters: 

types ? the types that define the C++ signature of the signal. Each type may be a Python type object or a string that is the name of a C++ type. Alternatively each may be a sequence of type arguments. In this case each sequence defines the signature of a different signal overload. The first overload will be the default.

name ? the name of the signal. If it is omitted then the name of the class attribute is used. This may only be given as a keyword argument.

revision ? the revision of the signal that is exported to QML. This may only be given as a keyword argument.

arguments ? the sequence of the names of the signal’s arguments that is exported to QML. This may only be given as a keyword argument.

Return type:    an unbound signal

新的信號應該定義在QObject的子類中。新的信號必須作為定義類的一部分,不允許將信號作為類的屬性在類定義之后通過動態的方式進行添加。通過這種方式新的信號才能自動的添加到QMetaObject類中。這就意味這新定義的信號將會出現在Qt Designer,并且可以通過QMetaObject API實現內省。

通過下面的例子,了解一下關于signal的定義:

from PyQt5.QtCore import QObject, pyqtSignalclass NewSignal(QObject): # 定義了一個“closed”信號,該信號沒有參數據 closed= pyqtSignal() # 定義了一個'range_changed'信號,該信號有兩個int類型的參數 range_changed = pyqtSignal(int, int, name=’rangeChanged’)

自定義信號的發射,通過emit()方法類實現,具體參見該函數的原型:

emit(*args)

Parameters: args ? the optional sequence of arguments to pass to any connected slots.

通過下面的例子,了解一下關于emit()的使用:

from PyQt5.QtCore import QObject, pyqtSignalclass NewSignal(QObject): # 一個valueChanged的信號,該信號沒有參數. valueChanged = pyqtSignal() def connect_and_emit_valueChanged(self): # 綁定信號和槽函數 self.valueChanged.connect(self.handle_valueChanged) # 發射信號. self.trigger.emit() def handle_valueChanged(self): print('trigger signal received')

示例說明:

自定義信號的一般流程如下:

定義信號 定義槽函數 綁定信號和槽 發射信號

通過代碼示例來了解一下信號的自定義過程:

#-*- coding:utf-8 -*-’’’defined Signal’’’__author__ = ’Tony Zhu’import sysfrom PyQt5.QtCore import pyqtSignal, QObject, Qt, pyqtSlotfrom PyQt5.QtWidgets import QWidget, QApplication, QGroupBox, QPushButton, QLabel, QCheckBox, QSpinBox, QHBoxLayout, QComboBox, QGridLayoutclass SignalEmit(QWidget): helpSignal = pyqtSignal(str) printSignal = pyqtSignal(list) #聲明一個多重載版本的信號,包括了一個帶int和str類型參數的信號,以及帶str參數的信號 previewSignal = pyqtSignal([int,str],[str]) def __init__(self): super().__init__()self.initUI() def initUI(self): self.creatContorls('打印控制:') self.creatResult('操作結果:') layout = QHBoxLayout() layout.addWidget(self.controlsGroup) layout.addWidget(self.resultGroup) self.setLayout(layout) self.helpSignal.connect(self.showHelpMessage) self.printSignal.connect(self.printPaper) self.previewSignal[str].connect(self.previewPaper) self.previewSignal[int,str].connect(self.previewPaperWithArgs) self.printButton.clicked.connect(self.emitPrintSignal) self.previewButton.clicked.connect(self.emitPreviewSignal) self.setGeometry(300, 300, 290, 150) self.setWindowTitle(’defined signal’) self.show() def creatContorls(self,title): self.controlsGroup = QGroupBox(title) self.printButton = QPushButton('打印') self.previewButton = QPushButton('預覽') numberLabel = QLabel('打印份數:') pageLabel = QLabel('紙張類型:') self.previewStatus = QCheckBox('全屏預覽') self.numberSpinBox = QSpinBox() self.numberSpinBox.setRange(1, 100) self.styleCombo = QComboBox(self) self.styleCombo.addItem('A4') self.styleCombo.addItem('A5') controlsLayout = QGridLayout() controlsLayout.addWidget(numberLabel, 0, 0) controlsLayout.addWidget(self.numberSpinBox, 0, 1) controlsLayout.addWidget(pageLabel, 0, 2) controlsLayout.addWidget(self.styleCombo, 0, 3) controlsLayout.addWidget(self.printButton, 0, 4) controlsLayout.addWidget(self.previewStatus, 3, 0) controlsLayout.addWidget(self.previewButton, 3, 1) self.controlsGroup.setLayout(controlsLayout) def creatResult(self,title): self.resultGroup = QGroupBox(title) self.resultLabel = QLabel('') layout = QHBoxLayout() layout.addWidget(self.resultLabel) self.resultGroup.setLayout(layout) def emitPreviewSignal(self): if self.previewStatus.isChecked() == True: self.previewSignal[int,str].emit(1080,' Full Screen') elif self.previewStatus.isChecked() == False: self.previewSignal[str].emit('Preview') def emitPrintSignal(self): pList = [] pList.append(self.numberSpinBox.value ()) pList.append(self.styleCombo.currentText()) self.printSignal.emit(pList) def printPaper(self,list): self.resultLabel.setText('Print: '+'份數:'+ str(list[0]) +' 紙張:'+str(list[1])) def previewPaperWithArgs(self,style,text): self.resultLabel.setText(str(style)+text) def previewPaper(self,text): self.resultLabel.setText(text) def keyPressEvent(self, event): if event.key() == Qt.Key_F1: self.helpSignal.emit('help message') def showHelpMessage(self,message): self.resultLabel.setText(message) #self.statusBar().showMessage(message)if __name__ == ’__main__’: app = QApplication(sys.argv) dispatch = SignalEmit() sys.exit(app.exec_())

運行該函數之后的效果如下:

python GUI庫圖形界面開發之PyQt5信號與槽機制、自定義信號基礎介紹

示例說明:

通過一個模擬打印的界面來詳細說明一下關于信號的自定義,在打印的時候可以設定打印的分數,紙張類型,觸發“打印”按鈕之后,將執行結果顯示到右側;通過全屏預覽QCheckBox來選擇是否通過全屏模式進行預覽,將執行結果顯示到右側。

通過點擊F1快捷鍵,可以顯示helpMessage信息。

代碼分析:

L12~15:

helpSignal = pyqtSignal(str)printSignal = pyqtSignal(list)#聲明一個多重載版本的信號,包括了一個帶int和str類型參數的信號,以及帶str參數的信號previewSignal = pyqtSignal([int,str],[str])

通過pyqtSignal()定義了三個信號,helpSignal ,printSignal ,previewSignal 。其中:

helpSignal 為str參數類型的信號; printSignal 為list參數類型的信號; previewSignal為一個多重載版本的信號,包括了一個帶int和str類型參數的信號,以及str類行的參數。

L31~36:

self.helpSignal.connect(self.showHelpMessage)

self.printSignal.connect(self.printPaper)

self.previewSignal[str].connect(self.previewPaper) 

self.previewSignal[int,str].connect(self.previewPaperWithArgs)

self.printButton.clicked.connect(self.emitPrintSignal)

self.previewButton.clicked.connect(self.emitPreviewSignal)

綁定信號和槽;著重說明一下多重載版本的信號的綁定,previewSignal有兩個版本previewSignal(str),previewSignal(int,str)。由于存在兩個版本,從因此在綁定的時候需要顯式的指定信號和槽的綁定關系。

具體如下:

self.previewSignal[str].connect(self.previewPaper)

self.previewSignal[int,str].connect(self.previewPaperWithArgs)

其中[str]參數的previewSignal信號綁定previewPaper();[int,str]的previewSignal信號綁定previewPaperWithArgs()

L72~76:

def emitPreviewSignal(self): if self.previewStatus.isChecked() == True: self.previewSignal[int,str].emit(1080,' Full Screen') elif self.previewStatus.isChecked() == False: self.previewSignal[str].emit('Preview')

多重載版本的信號的發射也需要制定對應發射的版本,類似同信號的版定。

L78~82:

def emitPrintSignal(self): pList = [] pList.append(self.numberSpinBox.value ()) pList.append(self.styleCombo.currentText()) self.printSignal.emit(pList)

如代碼中所示,在信號發射的時候可以傳遞python數據類型的參數,在本例中傳遞list類型的參數pList.

L93~96:

def keyPressEvent(self, event): if event.key() == Qt.Key_F1: self.helpSignal.emit('help message')

通過復寫keyPressEvent()方法,將F1快捷鍵進行功能的拓展。在windows的大部分應用,我們都會使用一些快捷鍵來快速的完成某些特定的功能。比如F1鍵,會快速調出幫助界面。那我們就可以復寫keyPressEvent()方法來模擬發送所需的信號,來完成我們的對應任務.

注意事項:

自定義的信號在init()函數之前定義; 自定義型號可以傳遞,str、int、list、object、float、tuple、dict等很多類型的參數; 注意signal和slot的調用邏輯,避免signal和slot之間出現死循環。如在slot方法中繼續發射該信號;

更多關于python GUI庫圖形界面開發之PyQt5文章請查看下面的相關鏈接

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲你懂的 | 亚洲最大色大成人av | 国产免费成人 | 99re8在线精品视频免费播放 | 久久人人爽人人爽人人片 | 91精品国产一区二区三区 | 国产精品成人一区二区三区 | 韩国三级网址 | 色姑娘久 | 免费视频黄色 | 国产精品十八禁在线观看 | 国产喷水吹潮在线播放91 | 日本韩国欧美 | 张津瑜警花国产精品一区 | juliaannxxxxx高清| 麻花豆传媒mv在线观看 | 国产精品久久久久久久龚玥菲 | 少妇喷潮明星 | 奇米影视777在线观看 | 欧美性猛交 | hd最新国产人妖ts视频仙踪林 | 欧美日韩一区二区三区视频播放 | 蜜臀av免费一区二区三区久久乐 | 377p粉嫩日本欧洲色噜噜 | 久久精品99国产国产精 | 国产一级网站 | 最新超碰在线 | 西西444www无码大胆 | 日韩三级av在线 | 校园春色自拍偷拍 | 国产成人精 | 强行交换配乱婬bd | 久久人人视频 | 亚洲一区精品人人爽人人躁 | 一本一道久久综合久久 | 本道久久综合无码中文字幕 | 99精品视频在线观看 | 中文字幕欧美人妻精品一区 | 成人黄色三级 | 久久久精品美女 | 日本污ww视频网站 | 亚洲乱亚洲乱妇91p丰满 | 最新日韩av | 巨肉黄暴辣文高h文帐中香 巨乳动漫美女 | 久久这里只有精品23 | 国产精品欧美一区二区三区不卡 | 国产日韩av在线 | 欧美中文字幕一区二区三区 | 性的免费视频 | 91精品国产综合久久小仙女图片 | 免费三级网站 | 欧美激情亚洲一区 | 亚洲区欧美区综合区自拍区 | 国产一区二区三区免费 | 给我免费的视频在线观看 | 亚洲人ⅴsaⅴ国产精品 | 91看黄| 女人被做到高潮免费视频 | 成在线人视频免费视频 | 91麻豆精品秘密 | 黄色a一级 | 农村寡妇一区二区三区 | 成人在线一区二区三区 | 公的~yin之手筱田优中文字幕 | 日本特黄特色大片免费视频老年人 | av在线h| 亚洲在线一区二区 | 人人干超碰 | 亚洲国产成人精品女 | 亚洲熟妇色xxxxx欧美老妇y | 国产美女牲交视频 | 亚洲精品一线二线 | 久久久久久久久久久久 | 亚洲高清中文字幕 | 少妇高潮喷潮久久久影院 | 九色精品在线 | 国产区在线 | 性生大片免费观看一片黄动漫 | 四虎永久在线精品免费网站 | 91在线播放视频 | 麻豆一区二区99久久久久 | 欧美在线 | 亚洲 | 高清国产一区 | 337p日本欧洲亚洲大胆色噜噜 | 成人国产一区二区三区 | 黑人粗长大战亚洲女 | 亚色网站 | 国产做受视频 | 麻豆国产丝袜白领秘书在线观看 | 99免费在线观看 | zljzljzlj日本人免费 | 国产三级香港三韩国三级 | 国产午夜三级一二三区 | 乱码精品国产成人观看免费 | 久久久亚洲裙底偷窥综合 | 国产精品另类激情久久久免费 | 亚洲成人在线免费 | 91精品一区 | 国内自拍小视频 | 极品少妇脚交xxxxh | 人妻无码中文字幕免费视频蜜桃 | 真实国产精品视频400部 | 99精品国产高清在线观看 | 欧美色亚洲色 | 欧美在线视频一区二区 | 欧美美女性生活 | 日本激情小视频 | 亚洲高清视频一区二区三区 | 中文字幕在线2018 | 亚洲天堂网在线观看 | 无码人妻久久一区二区三区不卡 | 欧美激情一区二区久久久 | 成 人片 黄 色 大 片 | 寡妇毛片一区二区三区 | 国产盗摄一区二区 | 中文字幕资源网 | 国产在线拍偷自揄拍无码 | 女高中生自慰污污网站 | 欧美大片a | 国产免费内射又粗又爽密桃视频 | 国产网红主播三级精品视频 | 亚洲大尺度专区 | 亚洲精品12p| 经典av在线 | 亚洲春色av | 黄色小视频免费网站 | 夜爽8888视频在线观看 | 欧美影视一区 | 四虎播放| 丰满少妇夜夜爽爽高潮水网站 | 国产av夜夜欢一区二区三区 | 日韩专区视频 | 国产中文字字幕乱码无限 | 蜜桃一二三区 | 中文字幕av影片 | 日韩无码专区 | caowo88国产欧美久久 | 狠狠影院| 国产精品原创av | 4色av| 性盈盈影院中文字幕 | 中国美女牲交视频 | 欧美亚洲一区二区三区四区 | 国产一区二区三区久久精品 | 91亚洲精品在线 | 日本精品不卡 | 亚洲专区欧美 | 337p嫩模大胆色肉噜噜噜 | 成人小视频免费观看 | 国产精品久久久久久52avav | 中文字幕 日本 | 久久久久久国产精品免费免费 | 夜夜爽夜夜操 | 国产裸体歌舞一区二区 | 欧美精选一区 | 亚洲精品久久久久玩吗 | 久久爱另类一区二区小说 | 在厨房被c到高潮a毛片奶水 | 午夜九九 | 狠狠干很很操 | 久久久久久久女国产乱让韩 | 久久久久毛片 | 成人欧美一区二区三区黑人麻豆 | 久久亚洲精品中文字幕 | 黑人与日本少妇 | 日韩黄色成人 | 精品免费久久久久久久 | 18禁免费无码无遮挡不卡网站 | 欧美专区视频 | 成人激情免费视频 | 亚洲成熟少妇 | 精品国产乱码久久久久久芒果 | 一级片亚洲 | 一本色道久久综合精品竹菊 | 白嫩少妇喷水正在播放 | 米奇777四色精品人人爽 | 女人脱了内裤趴开腿让男躁 | 亚洲人 女学生 打屁股 得到 | 国产乱来视频 | 中文字幕日本免费毛片全过程 | 欧美疯狂做受xxxx高潮小说 | 成人国产综合 | 91亚洲精品久久久蜜桃网站 | 五月激情小说网 | 少妇精品偷拍高潮白浆 | 国产精品亚洲综合一区在线观看 | 林雅儿欧洲留学恋爱日记在线 | 欧美性大战久久久久久久 | 亚洲区av | 99久久无码一区人妻a黑 | 亚洲天堂在线视频播放 | 人人爽人人爽人人爽人人爽 | 精品免费国产一区二区三区四区 | 美女黄色免费网站 | 欧美大片一区二区 | 国产91精选 | wwwcom亚洲| 国产精品国产三级国产aⅴ中文 | 日韩视频久久 | 成人国产欧美 | 中文字幕综合 | 日本一级片在线观看 | 亚洲国产超清无码专区 | 国产剧情v888av| 狠狠影院 | 欧美色图19p| 狠狠97 | 成人av黄色 | 蜜桃成人无码区免费视频网站 | 国产三香港三韩国三级古装 | 亚洲一区二区在线观看视频 | 精品一区二区三区中文字幕 | 国语自产免费精品视频在 | 少妇系列之白嫩人妻 | 国产精品久久久久久久岛一本蜜乳 | 国产剧情v888av | 亚洲人成电影网站在线观看 | 红桃视频成人传媒 | 欧美性猛交ⅹxxx乱大交妖精 | 女性女同性aⅴ免费观女性恋 | 综合色区亚洲熟妇另类 | 在线看黄色av | 国产精品久久久久久久福利竹菊 | www超碰| 艳妇臀荡乳欲伦交换h在线观看 | 亚洲色域网 | 午夜艹逼| 99视频在线精品免费观看2 | 蜜臀一区二区三区精品免费视频 | 毛片一卡二卡 | 久久久久久久久艹 | 国产九一精品 | 青在线视频 | 色综合久久无码五十路人妻 | 欧美混交群体交 | 日韩精品1 | 欧美在线成人免费 | 欧美aa在线观看 | 日本韩国毛片 | 98自拍视频 | 久久99网站| 狠狠色丁香久久婷婷综合_中 | 潘金莲aa毛片一区二区 | 91国产丝袜在线播放动漫 | 电车痴汉在线观看 | 五月久久 | 麻豆精产国品 | 国产嫩草一区二区三区在线观看 | 国产疯狂伦交大片 | 香蕉视频网站在线观看 | 天天操夜夜操 | 91中文啦| 国产午夜精品av一区二区 | 精品视频一区二区三区 | 污污视频免费网站 | 91免费网站视频 | 国产精品成人一区二区三区夜夜夜 | 亚洲一线二线三线写真 | 求欧美精品网址 | 国产人妖ts重口系列网站观看 | 国产精选av| 自拍偷拍第二页 | 国产一级片子 | 精品人妻午夜一区二区三区四区 | a级片免费在线观看 | 日本美女久久 | 久久久在线免费观看 | 激情国产 | 久久精品导航 | 亚洲一区二区观看播放 | 内谢少妇xxxxx8老少交视频 | 另类专区成人 | 成年人小视频 | 久久久久免费看黄a片app | 中文字幕乱码人妻一区二区三区 | 醉酒后少妇被疯狂内射视频 | 秋霞av亚洲一区二区三 | 久久久天堂国产精品女人 | 啃乳做爰猛烈床戏三级 | 欧美日韩国产成人一区 | 日本三级免费 | 一级免费观看视频 | 嫩草一线产区和二线产区 | 国产91极品 | 翘臀后进少妇大白嫩屁股 | 99久久精品免费视频 | 456成人精品影院 | 精品人伦一区二区色婷婷 | 亚洲情综合五月天 | 日本一本二本三区免费 | 中文字幕一区二区三区乱码在线 | 丰满少妇高潮惨叫久久久 | 影音先锋男人天堂 | 视频精品一区二区三区 | 狠狠色噜噜狠狠狠狠69 | 久久精品久久久久久 | 国产精品精华液网站 | 亚洲一区二区视频 | 色妞导航| 精品人妻无码一区二区三区蜜桃一 | 青青草国产精品一区二区 | 亚洲天堂av网 | 大乳美女a级三级三级 | 国产又粗又猛又爽又黄无遮挡 | 伊人二区| 国产精品自拍视频 | 国产在线一区二区三区四区 | 中文字幕色站 | 正在播放凉森玲梦88av | 美女扒开奶罩露出奶头视频网站 | 99精品久久久久 | 国产丝袜视频在线观看 | 偷啪自啪 | 色综合中文字幕 | 国产尤物av尤物在线看 | 欧美成人免费一区二区 | 男女做激情爱呻吟口述全过程 | 亚洲欧美自偷自拍 | 国产精品一二三四区 | 亚洲人av高清无码 | 亚洲一区二区三区乱码aⅴ蜜桃女 | 91蝌蚪视频在线观看 | 媚药一区二区三区四区 | 成年人网站免费 | 神马影院午夜伦理 | 黄色变态网站 | 99国产高清| 亚洲一区日韩精品 | 久久精品欧美一区二区三区麻豆 | 亚洲一区二区三区四区五区xx | 日本三级午夜理伦三级三 | 亚洲第一黄色网址 | 亚洲成在线 | yjizz视频| 午夜av激情 | 国产亚洲视频在线观看 | 久久综合99re88久久爱 | 精品国产一区二区三区av性色 | 91亚洲精品乱码久久久久久蜜桃 | 国产精品久久久久久久久免费相片 | 青青免费视频在线 | 亚洲狠狠操 | 国产做a爰片久久毛片a我的朋友 | 国内精品久久久久久久久久清纯 | 午夜dj在线观看免费视频 | 国产乱淫精品一区二区三区毛片 | 日本h在线| 奇米影视一区二区 | 婷婷九九 | 日韩av在线中文字幕 | 国产成人涩涩涩视频在线观看 | 污污污www精品国产网站 | 亚洲国产精品免费在线观看 | aaa日本高清在线播放免费观看 | 久久久久久久久毛片精品 | 精品国产人成亚洲区 | 亚洲欧美在线免费观看 | 国产香蕉97碰碰碰视频在线观看 | zzjizzji亚洲日本少妇 | jzzijzzij日本成熟丰满少妇 | 欧美日韩一区在线观看 | 中文字幕日韩欧美 | 国产免费一区二区三区在线能观看 | 青青草视频国产 | 天天做天天看 | 久草在线看片 | 99色| 亚洲精品tv | 久久久综合香蕉尹人综合网 | 中文字幕亚洲精品 | 香蕉依人 | 天天摸天天看天天做天天爽 | 午夜精品久久久久久久久 | 国产情侣真实露脸在线 | 男人天堂成人网 | 国产精品久久久久久麻豆一区 | 无码人妻精品一区二区三区9厂 | 狠狠色丁香婷婷久久综合不卡 | 国产精品日本一区二区不卡视频 | 巨肉黄暴辣文高h文帐中香 巨乳动漫美女 | 偷拍成人一区亚洲欧美 | 日本少妇一级 | 成人免费高清 | 日本xxxxx片免费观看19 | 97人人插| 日韩精品久久久久 | 欧美在线视频免费观看 | 久久久久人妻精品一区 | 国产日批视频在线观看 | aaaaa少妇高潮大片 | 暖暖在线日本免费高清最新版 | 日韩av片免费观看 | 成人亚洲国产精品一区不卡 | 亚洲美女福利视频 | 中文天堂在线视频 | 99精品人妻少妇一区二区 | 国产三级在线视频 一区二区三区 | 欧美熟妇另类久久久久久不卡 | 精品动漫3d一区二区三区免费版 | 色一情一乱一伦一区二区三区日本 | 午夜精品久久久久久久久久蜜桃 | 91女神在线 | 国产婷婷精品任我爽欧美 | 成av免费大片黄在线观看 | 艳妇臀荡乳欲伦交换日本 | 美女视频黄8视频大全 | 日韩精品h| 国产精品久久久久永久免费看 | 嫩草www| 一级特黄av | 91蜜桃臀久久一区二区 | 国产91丝袜 | 色综合av | 人妻无码视频一区二区三区 | 小视频在线免费观看 | 国产精品va在线播放 | 中文字幕在线视频播放 | 欧美xxxx黑人又粗又长精品 | 日日噜噜夜夜狠狠视频 | 亚洲精品图片一区15p | 性高潮网站 | 在线观看欧美成人 | 肉体公尝中文字幕第三部 | 中国女人一级片 | 国产欧美日韩一区二区三区在线 | 日韩一区二区免费在线观看 | 男人懂得网站 | 亚洲国产成人爱av在线播放 | 亚洲高清视频一区 | 一个人在线观看www软件 | 色妞干网| 久久国产劲爆∧v内射 | 激情久久久久久久 | av大全在线播放 | 黄色网页在线播放 | 天堂资源成人√ | 亚洲欧洲日本综合aⅴ在线 国语自产偷拍精品视频偷 午夜无码区在线观看 | 国产成人精品无码片区在线观看 | 粉嫩av一区二区三区四区免费 | 不卡av在线| 少妇一级淫片免费播放 | 69久久99精品久久久久婷婷 | 久久成人国产精品入口 | 性做久久久久久久久 | 美女18免费视频 | 国产成人精品av久久 | 婷婷六月网 | 91极品身材尤物theporn | 国产成人精品视频网站 | 亚洲三级久久 | 精品国产乱码久久久 | 青草福利在线 | 调教一区| 国产午夜福利片在线观看 | 色琪琪久久草在线视频 | 青青草社区 | 爱爱免费视频网站 | 国产大屁股视频免费区 | 国产免费观看久久黄av片 | 超碰女| 日韩色在线 | 色135综合网 | 日日av拍夜夜添久久免费 | 成人高清视频在线观看 | 草色噜噜噜av在线观看香蕉 | 久久亚洲精华国产精华液 | 五月婷婷俺也去 | 在线观看视频毛片 | 亚洲自偷自偷在线成人网站传媒 | 韩国xxx hd videos 韩国黄色毛片 | 理论视频在线观看 | av一区二区三区四区 | 无码ol丝袜高跟秘书在线观看 | 亚洲国产成人久久一区www妖精 | 国产孕妇孕交高潮 | 极品少妇被啪到呻吟喷水 | 日本xxxx裸体xxxx视频大全 | 亚洲精品欧洲 | a欧美在线| 午夜在线网址 | 日韩三级成人 | 超碰97人人做人人爱少妇 | 51国偷自产一区二区三区 | 手机av免费观看 | 国产精品久久久久久福利一牛影视 | 人人妻人人澡人人爽欧美一区九九 | 五十岁熟韵母乱视国产 | 好紧好湿好黄的视频 | 狠狠色噜噜狠狠狠狠黑人 | 小镇姑娘高清在线观看 | 国产午夜精品一区二区三区四区 | 免费无码专区毛片高潮喷水 | 免费 成 人 黄 色 | 鲁一鲁在线| 天堂资源在线 | 久久久无码精品一区二区三区蜜桃 | 午夜激情久久 | 欧美精品五区 | 红桃av一区二区三区在线无码av | 六月丁香婷婷色狠狠久久 | 美国免费黄色片 | 在线播放小视频 | www91视频com| 亚洲性视频在线 | 国产成人综合久久久久久 | 寡妇毛片一区二区三区 | 免费午夜网站 | 青青青国产精品一区二区 | 天天曰| 久久久久久久久99 | 特级毛片在线大全免费播放 | 日本最新免费二区三区 | 亚洲人成人一区二区在线观看 | 少妇下面好紧好多水真爽播放 | 国产精品久久久久久久久动漫 | 亚洲国产精品婷婷 | www.av视频在线观看 | 久久亚洲精品国产亚洲老地址 | 久热网 | 爱情岛成人www亚洲网站 | 国产精品色呦呦 | 91视频久久| 黄色网址国产 | 日本www黄| 中文字幕高清一区 | 成人av一区二区兰花在线播放 | 99精品国产兔费观看久久 | 成人妇女免费播放久久久 | 四虎影视免费永久观看在线 | 亚洲人成在线影院 | 国产艳妇av在线观看果冻传媒 | 国产91精品高清一区二区三区 | 国产中文区二暮区2022 | 久久久av亚洲男天堂 | 国产黄a三级三级三级 | 久久视频精品在线 | 久久久久人妻一区精品 | 鸥美一级片 | 欧美黑人精品一区二区不卡 | 人人爽人人爽人人片 | 国产成人一区 | 中文字幕无码日韩欧毛 | 亚洲69av| 亚洲精品国产精品99久久 | 国产乱码一区二区三区咪爱 | 九色视频网址 | 国产人妖视频一区二区 | 久久天堂精品 | 好屌草这里只有精品 | xvideos成人免费看视频 | 91伦理视频| 免费涩涩网站 | 2020最新国产自产精品 | 日韩av在线网址 | 国产精品一卡二卡 | 无码人妻丰满熟妇区bbbbxxxx | 国产99热 | 天天干视频在线 | 免费一级做a爰片久久毛片潮喷 | 欧美精品一区二区三区久久久 | 日韩免费视频一区二区 | 99精品99| 日本人又黄又爽又大又色 | 亚洲精品久久久久久久不卡四虎 | 国产又黄又猛又粗又爽的 | 五月色婷婷俺来也在线观看 | 天天干天天谢 | 国产精品久久久久久久久久久久久久久 | 波多野结衣50连登视频 | 永久免费成人 | 天堂一二三区 | 自拍偷自拍亚洲精品播放 | 精品人妻系列无码一区二区三区 | 国产全肉乱妇杂乱视频 | 国产 一二三四五六 | 日韩精品免费播放 | 欧美精选一区二区三区 | 色资源网站| 男女18禁啪啪无遮挡激烈网站 | 哺乳一区二区三区中文视频 | 手机av在线免费观看 | 成人欧美一区二区三区白人 | 精品国产成人一区二区 | 床戏做爰无遮挡摸亲胸小说 | 亚洲色图40p | 免费中文字幕av | 国产一区二区网 | 亚洲第一成人区av桥本有菜 | 国产精品香蕉 | 青青青视频在线 | 免费的黄色小视频 | 日本特黄特色a大片免费高清观看视频 | 99国产精品久久久久99打野战 | 四虎影视www在线播放 | 国产精品日本一区二区在线播放 | 欧美wwwwww| 中文字幕三级视频 | 丁香六月伊人 | 日日摸天天摸97狠狠婷婷 | 亚洲精品人| 奇米影视第四色首页 | 久草网视频 | 老司机深夜福利在线观看 | 蜜桃视频插满18在线观看 | wwww亚洲 | 精品深夜av无码一区二区 | 黄瓜视频在线免费观看 | 中文字幕日韩精品无码内射 | 麻豆免费在线观看视频 | 久久国产精久久精产国 | 无遮挡1000部拍拍拍免费 | 成年人免费在线观看视频网站 | 亚洲天堂视频在线观看免费 | 91大神小宝寻花在线观看 | 九草在线观看 |