3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

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

c/c++

qtextedit 默认文案_QT中常用的控件说明.md

發布時間:2024/9/30 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qtextedit 默认文案_QT中常用的控件说明.md 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2主窗口類型

有三種窗口

QMainWindow

QWiget

QDialog

QMainWindow:可以包含菜單欄,工具欄和標題欄,是

最常見的窗口顯示形式。

QDialog:是對話窗口的基類。沒有菜單欄,工具欄,狀態欄

QWiget:不確定窗口的用途,就用QWidget。

## QT中常用的控價

### 1、Qlabel控件

setAlignment() 設置文本的對齊方式

setIndent() 設置文本的縮進

text() 獲取文本

setBuddy() 設置伙伴關系

setText() 設置文本內容

selectedText() 返回所選擇的字符

setWordWrap() 設置是否運行換行

#### QLabel常用的信號

1.當鼠標劃過Qlabel控件時觸發:linkHovered

2.當鼠標單擊Qlabel控件時觸發:linkActivated

| 方法 | 解釋 |

| ------------- | ------------------------------- |

| clear() | 清空剪貼板內容 |

| mimeData() | 獲取剪貼板上的MIME類型數據 |

| setMimeData() | 將MIME類型數據放到剪貼板中 |

| pixmap() | 獲取剪貼板上的QPixmap類型的數據 |

| setPixmap() | 將QPixmap類型數據放到剪貼板中 |

| image() | 獲取剪貼板上QImage類型的數據 |

| setImage() | 將QImage類型數據放到剪貼板中 |

| text() | 獲取剪貼板上的文本 |

| setText() | 將文本放到剪貼板中 |

#### QLabel與伙伴控件

### 2、Edit控件

#### QLineEdit

基本功能:輸入單行的文本

##### EchoMode(回顯模式)

4種回顯模式

1、Normal

2、NoEcho

3、Password

4、PasswordEchoOnEdit

##### 方法:

+ setPlaceholderText():在line沒有輸入的時候給出提示信息

##### QLineEdit控件的輸入(校驗器)

如限制只能輸入整數,浮點數或者滿足一定條件的字符串

##### 用掩碼限制QLineEdit控件的輸入

```pyth

用掩碼限制QLineEdit控件的輸入

A ASCII字母字符是必須輸入的(A-Z、a-z)

a ASCII字母字符是允許輸入的,但不是必需的(A-Z、a-z)

N ASCII字母字符是必須輸入的(A-Z、a-z、0-9)

n ASII字母字符是允許輸入的,但不是必需的(A-Z、a-z、0-9)

X 任何字符都是必須輸入的

x 任何字符都是允許輸入的,但不是必需的

9 ASCII數字字符是必須輸入的(0-9)

0 ASCII數字字符是允許輸入的,但不是必需的(0-9)

D ASCII數字字符是必須輸入的(1-9)

d ASCII數字字符是允許輸入的,但不是必需的(1-9)

# ASCI數字字符或加減符號是允許輸入的,但不是必需的

H 十六進制格式字符是必須輸入的(A-F、a-f、0-9)

h 十六進制格式字符是允許輸入的,但不是必需的(A-F、a-f、0-9)

B 二進制格式字符是必須輸入的(0,1)

b 二進制格式字符是允許輸入的,但不是必需的(0,1)

> 所有的字母字符都大寫

< 所有的字母字符都小寫

! 關閉大小寫轉換

\ 使用"\"轉義上面列出的字符

```

##### QLineEdit綜合案例

#### QTextEdit控件

QLineEdit控件只支持單行輸入,QTextEdit支持多行輸入

##### 常用的方法:

1.setPlainText() #設置文本

2.setHtml() #設置html格式

3.toPlainText() #獲取文本

4.toHtml

5.setFont() 設置文本框顯示的字體,參數是Font類型

```python

#設置字體的多選框和設置字體的Line的

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QComboBox, QFontComboBox, QLineEdit, QMessageBox, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.combobox_2 = QFontComboBox(self) # 2

self.lineedit = QLineEdit(self) # 3

self.v_layout = QVBoxLayout()

self.layout_init()

self.combobox_init()

def layout_init(self):

self.v_layout.addWidget(self.combobox_2)

self.v_layout.addWidget(self.lineedit)

self.setLayout(self.v_layout)

def combobox_init(self):

self.combobox_2.currentFontChanged.connect(lambda: self.on_combobox_func(self.combobox_2))

def on_combobox_func(self, combobox): # 8

self.lineedit.setFont(combobox.currentFont())

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

##### 事件:

+ textChanged 當文本框的文本內容發生變化時自動觸發信號

#### QTextBrowser控件

QTextEdit和QTextBrowser控件類似,但是一般QTextEdit是用來編輯文本的,而QTextBroser是用來顯示文本的

### 4、按鍵控件

1.QPushButton

事件:

+ toggled 標記

配合isChecked()函數使用,如果按鍵是已經標記則打印True,否則打印False。

+ clicked 點擊

+ pressed 按下

+ released 松開

方法:

+ setCheckable(True) 設置一個按鍵為一個可以標記的按鍵,該按鍵就會有兩種狀態,標記和非標記的狀態

+ setIcon() 為按鍵設置一個圖片,傳入的參數是QIcon的格式

+ isChecked() 查看按鍵的狀態,如果是標記狀態則是True,否標記狀態False

```python

import sys

from PyQt5.QtGui import QIcon

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.test_button = QPushButton('Test', self)

self.test_button.setCheckable(True) #設置按鍵為一個可標記的按鍵

self.test_button.setIcon(QIcon('images/save_as.ico')) #為按鍵設置圖片

self.test_button.toggled.connect(self.button_state_func) #為按鍵綁定事件

def button_state_func(self):

print(self.test_button.isChecked()) # 4

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

2.QToolButton

?注意:QToolButton實例化的時候不能直接傳入文本字符串,因為該控件沒有相應的初始化函數,也就是說這樣是錯誤的:self.test_button = QToolButton("test",self),如果要設置文本的話,的通過setText()的方法。但是如果同時使用setText()和setIcon()方法的話,只會顯示圖標。

```python

import sys

from PyQt5.QtGui import QIcon

from PyQt5.QtWidgets import QApplication, QWidget, QToolButton

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.test_button = QToolButton(self) # 1

self.test_button.setCheckable(True)

self.test_button.setIcon(QIcon('images/save_as.ico'))

self.test_button.toggled.connect(self.button_state_func)

self.test_button.isCheckable()

def button_state_func(self):

print(self.test_button.isChecked())

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

3.QRadioButton

一個布局中只能又一個單選框被選中

方法toggled相當于選中和取消選中。現在QPushButton的toggle的方法類似,按下不會彈起

+ setChecked(True) 單選框設置為選中。

+ setChecke() 獲取是否選中的狀態

+ setCheckState() 傳入參數Qt.Checked為選中狀態,Qt.Unchecked為無選中的狀態,Qt.PartiallyChecked為半選中的狀態。

+ text() 獲取文本

+ stateChanged 在復選框的狀態發生改變的時候觸發

```python

import sys

from PyQt5.QtGui import QPixmap

from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QHBoxLayout, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.off_button = QRadioButton('off', self) # 1

self.on_button = QRadioButton('on', self) # 2

self.pic_label = QLabel(self) # 3

self.button_h_layout = QHBoxLayout()

self.pic_h_layout = QHBoxLayout()

self.all_v_layout = QVBoxLayout()

self.layout_init()

self.radiobutton_init()

self.label_init()

def layout_init(self):

self.pic_h_layout.addStretch(1) #在未加入標簽之前先加入一個占位符

self.pic_h_layout.addWidget(self.pic_label)

self.pic_h_layout.addStretch(1) #在加入標簽之后加入一個占位符,作用是拉伸窗口的時候,label會自動適用窗口的大小

self.button_h_layout.addWidget(self.off_button)

self.button_h_layout.addWidget(self.on_button)

self.all_v_layout.addLayout(self.pic_h_layout)

self.all_v_layout.addLayout(self.button_h_layout)

self.setLayout(self.all_v_layout)

def radiobutton_init(self):

self.off_button.setChecked(True) #設置為選中的狀態

self.off_button.toggled.connect(self.on_off_bulb_func) # 6

# self.on_button.toggled.connect(self.on_off_bulb_func)

def label_init(self):

self.pic_label.setPixmap(QPixmap('images/off.png')) # 7

def on_off_bulb_func(self): # 8

if self.off_button.isChecked():

self.pic_label.setPixmap(QPixmap('images/off.png'))

else:

self.pic_label.setPixmap(QPixmap('images/on.png'))

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

4.QCheckBox

三種狀態:

1、沒選中0

2、半選中1

3、選中2

復選框一共有三種狀態:全選中、半選中和無選中。若一個父選項的子選項全部為選中狀態,則該父選項為全選中;若子選項全部為無選中狀態,則該父選項為無選中狀態;若子選項既有全選中和無選中狀態,則該父選項為半選中狀態。

事件:

?stateChanged 是狀態變化時觸發信號

方法:

?checkState() 查看選中的狀態:0、1、2

?setchecked(True) 設置選擇狀態,只有選中和未選中

?setcheckState() 設置選擇的狀態,Qt.Checked為選中的狀態,Qt.Unchecked未選中狀態和

?Qt.PartiallyChecked為半選中的狀態。

```py

import sys

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.checkbox1 = QCheckBox('Checkbox 1', self)

self.checkbox2 = QCheckBox('Checkbox 2', self)

self.checkbox3 = QCheckBox('Checkbox 3', self)

self.v_layout = QVBoxLayout()

self.checkbox_init()

self.layout_init()

def layout_init(self):

self.v_layout.addWidget(self.checkbox1)

self.v_layout.addWidget(self.checkbox2)

self.v_layout.addWidget(self.checkbox3)

self.setLayout(self.v_layout)

def checkbox_init(self):

# self.checkbox1.setChecked(True) # 1

self.checkbox1.setCheckState(Qt.Checked) # 2

self.checkbox1.stateChanged.connect(lambda: self.on_state_change_func(self.checkbox1)) # 3

# self.checkbox2.setChecked(False)

self.checkbox2.setCheckState(Qt.Unchecked)

self.checkbox2.stateChanged.connect(lambda: self.on_state_change_func(self.checkbox2))

# self.checkbox3.setTristate(True) # 4

self.checkbox3.setCheckState(Qt.PartiallyChecked) # 5

self.checkbox3.stateChanged.connect(lambda: self.on_state_change_func(self.checkbox3))

def on_state_change_func(self, checkbox): # 6

print('{} was clicked, and its current state is {}'.format(checkbox.text(), checkbox.checkState()))

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

父類都是QAbstractButton

### 5、下拉列表控件QComboBox

```python

from PyQt5.QtWidgets import QCombobox

choice = "a"

choice_list = ["a","b","c"]

self.combobox_1 = QCombobox(self)

self.combobox_1.addItem(choice) #選擇下拉框中的一項

self.combobox_1.addItems(choice_list) #選擇下拉框的下拉列表

```

+ currentIndexChanged 當下拉框的選項發生變化時,會觸發這個方法。

+ currentTextChanged 當下拉框的文本發生變化時,會觸發這個方法。

+ currentIndex() 獲取下拉框當前的序號

+ currentText() 獲取當前的文本值

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QComboBox, QFontComboBox, QLineEdit, QMessageBox, QVBoxLayout

class Demo(QWidget):

choice = 'a'

choice_list = ['b', 'c', 'd', 'e']

def __init__(self):

super(Demo, self).__init__()

self.combobox_1 = QComboBox(self) # 1

self.combobox_2 = QFontComboBox(self) # 2

self.lineedit = QLineEdit(self) # 3

self.v_layout = QVBoxLayout()

self.layout_init()

self.combobox_init()

def layout_init(self):

self.v_layout.addWidget(self.combobox_1)

self.v_layout.addWidget(self.combobox_2)

self.v_layout.addWidget(self.lineedit)

self.setLayout(self.v_layout)

def combobox_init(self):

self.combobox_1.addItem(self.choice) # 4

self.combobox_1.addItems(self.choice_list) # 5

self.combobox_1.currentIndexChanged.connect(lambda: self.on_combobox_func(self.combobox_1)) # 6

# self.combobox_1.currentTextChanged.connect(lambda: self.on_combobox_func(self.combobox_1)) # 7

self.combobox_2.currentFontChanged.connect(lambda: self.on_combobox_func(self.combobox_2))

# self.combobox_2.currentFontChanged.connect(lambda: self.on_combobox_func(self.combobox_2))

def on_combobox_func(self, combobox): # 8

if combobox == self.combobox_1:

QMessageBox.information(self, 'ComboBox 1',

'{}: {}'.format(combobox.currentIndex(), combobox.currentText()))

else:

self.lineedit.setFont(combobox.currentFont())

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 6、滑塊控件

#### QSlider

```python

#水平滑條

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QSlider

self.slider_1 = QSlider(Qt.Horizontal,self)

self.slider_1.setRanger(0,100)

#垂直滑塊

self.slider_2 = QSlider(Qt.Vertical,self)

self.slider_2.setMinmum(0)

self.slider_2.setMaxmum(100)

```

valueChanged 滑塊的值發生變化的時候觸發此方法

```python

import sys

from PyQt5.QtCore import Qt

from PyQt5.QtGui import QFont

from PyQt5.QtWidgets import QApplication, QWidget, QSlider, QLabel, QVBoxLayout, QHBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.slider_1 = QSlider(Qt.Horizontal) # 水平滑塊

self.slider_1.setRange(0, 100) #設置滑塊滑動的范圍

self.slider_1.valueChanged.connect(lambda: self.on_change_func(self.slider_1)) # 3

self.slider_2 = QSlider(Qt.Vertical) #豎直的滑塊

self.slider_2.setMinimum(0) # 4

self.slider_2.setMaximum(100) # 5

self.slider_2.valueChanged.connect(lambda: self.on_change_func(self.slider_2))

self.label = QLabel('0', self) # 6

self.label.setFont(QFont('Arial Black', 20))

self.h_layout = QHBoxLayout()

self.v_layout = QVBoxLayout()

self.h_layout.addWidget(self.slider_2)

self.h_layout.addStretch(1)

self.h_layout.addWidget(self.label)

self.h_layout.addStretch(1)

self.v_layout.addWidget(self.slider_1)

self.v_layout.addLayout(self.h_layout)

self.setLayout(self.v_layout)

def on_change_func(self, slider): # 7

if slider == self.slider_1:

self.slider_2.setValue(self.slider_1.value())

self.label.setText(str(self.slider_1.value()))

else:

self.slider_1.setValue(self.slider_2.value())

self.label.setText(str(self.slider_2.value()))

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

#### QDial

```python

#球形滑塊

from PyQt5.QtWidgets import QDial

self.dial = QDial(self)

self.dial.setFixedSize(100,100) #設置QDail的大小

self.dial.setRange(0,100) #滑動的范圍

self.dial.setNotchesVisible(True) #顯示刻度,根據我們設置的數值自動調整

```

+ valueChanged 當改變Qdial的值時自動觸發這個信號

```python

import sys

from PyQt5.QtGui import QFont

from PyQt5.QtWidgets import QApplication, QWidget, QDial, QLabel, QHBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.setWindowTitle('QDial') # 1

self.dial = QDial(self)

self.dial.setFixedSize(100, 100) # 2

self.dial.setRange(0, 100) # 3

self.dial.setNotchesVisible(True) # 4

self.dial.valueChanged.connect(self.on_change_func) # 5

self.label = QLabel('0', self)

self.label.setFont(QFont('Arial Black', 20))

self.h_layout = QHBoxLayout()

self.h_layout.addWidget(self.dial)

self.h_layout.addWidget(self.label)

self.setLayout(self.h_layout)

def on_change_func(self):

self.label.setText(str(self.dial.value()))

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 7、計數器控件 QSpinBox

```python

from PyQt5.Qtwidgets import QSpinBox

self.spinbox = QSpinbox(self)

self.spinbox.setRange(-99,99)

self.spinbox.setSigleStep(1)

self.spinbox.setValue(66)

```

+ valueChanged 當里面的值發生變化時觸發此信號

+ setValue() 設置計數器的值。

+ value() 獲取計數器的值

QSpinBox為整型的數字計數器,而QDoubleSpinBox為浮點型的數字計數器

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QDoubleSpinBox, QHBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.spinbox = QSpinBox(self)

self.spinbox.setRange(-99, 99) # 1

self.spinbox.setSingleStep(1) # 2

self.spinbox.setValue(66) # 3

self.spinbox.valueChanged.connect(self.value_change_func) # 4

self.double_spinbox = QDoubleSpinBox(self) # 5

self.double_spinbox.setRange(-99.99, 99.99)

self.double_spinbox.setSingleStep(0.01)

self.double_spinbox.setValue(66.66)

self.h_layout = QHBoxLayout()

self.h_layout.addWidget(self.spinbox)

self.h_layout.addWidget(self.double_spinbox)

self.setLayout(self.h_layout)

def value_change_func(self):

decimal_part = self.double_spinbox.value() - int(self.double_spinbox.value()) # 6

self.double_spinbox.setValue(self.spinbox.value() + decimal_part) # 7

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 8 定時器和進度條

QTimer

```python

self.timer = QTimer(self)

self.timer.start(100) #開始啟動,沒過100ms觸發timeout信號

self.tiomer.stop() #停止

```

+ isActive() 為True時表示計時器已啟動,False為計時器沒有啟動

+ timeout 超時信號器,當有超時信號來時自動觸發

```python

import sys

from PyQt5.QtCore import QTimer, Qt

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.label = QLabel('0', self) # 1

self.label.setAlignment(Qt.AlignCenter)

self.step = 0 # 2

self.timer = QTimer(self) # 3

self.timer.timeout.connect(self.update_func) #到達計時時長之后自動觸發

self.ss_button = QPushButton('Start', self) # 4

self.ss_button.clicked.connect(self.start_stop_func)

self.v_layout = QVBoxLayout()

self.v_layout.addWidget(self.label)

self.v_layout.addWidget(self.ss_button)

self.setLayout(self.v_layout)

def start_stop_func(self):

if not self.timer.isActive():

self.ss_button.setText('Stop')

self.timer.start(1000) #開始計時,并設置計時的時長,每次到達后,自動重新計時

else:

self.ss_button.setText('Start')

self.timer.stop()

def update_func(self):

self.step += 1

self.label.setText(str(self.step))

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

QProgressBar

```python

from PyQt5.QtWidgets importy QProcessBar

self.progressbar = QProgressBar(self)

self.progressbar.setMinimum(0)

self.progressbar.setMaximum(100)

```

+ setQrientation(Qt.Vertical) 設置進度條是垂直顯示的,進度條默認是水平的

+ reset() 重置進度條

```python

import sys

from PyQt5.QtCore import Qt, QTimer

from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar, QPushButton, QHBoxLayout, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.progressbar = QProgressBar(self) # 1

# self.progressbar.setOrientation(Qt.Vertical)

self.progressbar.setMinimum(0) # 2

self.progressbar.setMaximum(100)

# self.progressbar.setRange(0, 100)

self.step = 0 # 3

self.timer = QTimer(self) # 4

self.timer.timeout.connect(self.update_func)

self.ss_button = QPushButton('Start', self) # 5

self.ss_button.clicked.connect(self.start_stop_func)

self.reset_button = QPushButton('Reset', self) # 6

self.reset_button.clicked.connect(self.reset_func)

self.h_layout = QHBoxLayout()

self.v_layout = QVBoxLayout()

self.h_layout.addWidget(self.ss_button)

self.h_layout.addWidget(self.reset_button)

self.v_layout.addWidget(self.progressbar)

self.v_layout.addLayout(self.h_layout)

self.setLayout(self.v_layout)

def start_stop_func(self):

if self.ss_button.text() == 'Start':

self.ss_button.setText('Stop')

self.timer.start(100)

else:

self.ss_button.setText('Start')

self.timer.stop()

def update_func(self):

self.step += 1

self.progressbar.setValue(self.step)

if self.step >= 100:

self.ss_button.setText('Start')

self.timer.stop()

self.step = 0

def reset_func(self):

self.progressbar.reset()

self.ss_button.setText('Start')

self.timer.stop()

self.step = 0

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 9 液晶數字顯示屏QLCDNumber

```python

from PyQt5.QtWidgets import QLCDNumber

self.lcd_1 = QLCDNumber(self)

self.lcd_1.setDigitCount(10) #顯示多少數字

self.lcd_1.display(1234567890)

```

+ setSegmentStyle()可以設置顯示屏數字樣式

| 常量 | 值 | 描述 |

| ------------------ | ---- | ---------------------------------------- |

| QLCDNumber.Outline | 0 | 讓內容浮顯,其顏色同顯示屏背景顏色相同 |

| QLCDNumber.Filled | 1 | 讓內容浮顯,顏色同窗口標題顏色相同 |

| QLCDNumber.Flat | 2 | 讓內容扁平化顯示,顏色同窗口標題顏色相同 |

+ setSmallDecimalPoint(bool)方法key9i設置小數點的顯示方式:為True小數點就在兩個數字之間顯示出來,而不會單獨占一個位置,如果為False,那么就會單獨占位(默認為False)

+ setMode()方法來更改數字顯示方式

| 參數 | 值 | 描述 |

| -------------- | ---- | -------- |

| QLCDNumber.Hex | 0 | 十六進制 |

| QLCDNumber.Dec | 1 | 十進制 |

| QLCDNumber.Oct | 2 | 八進制 |

| QLCDNumber.Bin | 3 | 二進制 |

### 10 日期相關的控件

QCalendarWidget 日歷控件

```python

from PyQt5.QtWidgets import QCalendarWidget

self.calendar = QCalendarWidget(self)

self.calendar.setMinimumDate(QDate(1956,2,14))

self.calendar.setMaximumDate(QDate(6666,6,6))

self.calendat.setGridVisible(True) #是否顯示網格

self.calendat.setSelectedDate(QDate(2020,8,9))

self.calendar.setFirstDayOfWeek(Qt.Monday) #設置一周的第一天是星期幾

```

+ setFirstDayOfWeek() 設置一個星期的第一天,默認是星期天

| Qt.Monday | 星期一 |

| ------------ | ------ |

| Qt.Tuesday | 星期二 |

| Qt.Wednesday | 星期三 |

| Qt.Thursday | 星期四 |

| Qt.Friday | 星期五 |

| Qt.Saturday | 星期六 |

| Qt.Sunday | 星期天 |

+ selectedDate().toString('ddd') 方法獲取星期的縮寫

#### QDateTimeEdit

```python

from PyQt5.QtWidgets import QDateTimeEdit,QDateEdit,QTimeEdit

from PyQt5.QtCore import QDate,QTime,QDateTime

self.datetime_1 = QDateTimeEdit(self) #初始時間2000年1月1號

self.datetime_2 = QDateTimeEdit(QDateTime.currentDateTime(),self) #系統的當前時間

self.datetime_2.setDisplayFormat("yyyy-MM-dd HH:mm:ss") #顯示的格式 'yyyy/MM/dd','HH:mm:ss'

print(self.datetime_2.date()) #日期

print(self.datetime_2.time())#時間

print(self.datetime_2.dateTime()) #日期+時間

self.datetime_2.setCalendarPopup(True) #改變日期的時候調用日歷

```

+ dateChanged 當時間改變的時候觸發此信號

```python

import sys

from PyQt5.QtCore import QDate, QTime, QDateTime

from PyQt5.QtWidgets import QApplication, QWidget, QDateTimeEdit, QDateEdit, QTimeEdit, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.datetime_1 = QDateTimeEdit(self) # 1

self.datetime_1.dateChanged.connect(lambda: print('Date Changed!'))

self.datetime_2 = QDateTimeEdit(QDateTime.currentDateTime(), self) # 2

self.datetime_2.setDisplayFormat('yyyy-MM-dd HH:mm:ss')

self.datetime_2.timeChanged.connect(lambda: print('Time Changed!'))

print(self.datetime_2.date())

print(self.datetime_2.time())

print(self.datetime_2.dateTime())

self.datetime_3 = QDateTimeEdit(QDateTime.currentDateTime(), self) # 3

self.datetime_3.dateTimeChanged.connect(lambda: print('DateTime Changed!'))

self.datetime_3.setCalendarPopup(True)

self.datetime_4 = QDateTimeEdit(QDate.currentDate(), self) # 4

self.datetime_5 = QDateTimeEdit(QTime.currentTime(), self)

self.date = QDateEdit(QDate.currentDate(), self) # 5

self.date.setDisplayFormat('yyyy/MM/dd')

print(self.date.date())

self.time = QTimeEdit(QTime.currentTime(), self) # 6

self.time.setDisplayFormat('HH:mm:ss')

print(self.time.time())

self.v_layout = QVBoxLayout()

self.v_layout.addWidget(self.datetime_1)

self.v_layout.addWidget(self.datetime_2)

self.v_layout.addWidget(self.datetime_3)

self.v_layout.addWidget(self.datetime_4)

self.v_layout.addWidget(self.datetime_5)

self.v_layout.addWidget(self.date)

self.v_layout.addWidget(self.time)

self.setLayout(self.v_layout)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 11、各種對話框

QDialog是所有對話框的基類

下面四種為常見的對話框

QMessageBox 消息對話框

QColorDialog 顏色對話框

QFontDialog 字體對話框

QInPutDialog 輸入對話框

QFileDialog 文件對話框

#### 消息對話框QmessageBox

總共分為以下幾種

1、關于對話框

```python

QMessageBox.about(self, 'Title', "content")

```

2、錯誤對話框

```python

QMessageBox.critical(self, 'Title', "content")

```

3、警告對話框

```python

QMessageBox.warning(self, 'Title', "content")

```

4、提問對話

```python

QMessageBox.question(self, 'Title', 'Content')

```

5、消息對話框

```python

from PyQt5.QtWidgets import QMessageBox

QMessageBox.information(self, 'Title', "content", QMessageBox.Yes | QMessageBox.No

| QMessageBox.Cancel)

```

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.button = QPushButton('information', self)

self.button.clicked.connect(self.show_messagebox)

def show_messagebox(self):

#第一個參數填self表示這個消息對話框是屬于Demo窗口的

QMessageBox.information(self, 'Title', 'Content',

QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

常見的按鈕類型有以下幾種:

+ QMessageBox.OK

+ QMessageBox.Yes

+ QMessageBox.No

+ QMessageBox.Close

+ QMessageBox.Cancel

+ QMessageBox.Open

+ QMessageBox.Save

有2點差異

1、顯示的對話框圖標可能不同

2、顯示的按鈕是不一樣的

```python

#與消息框進行交互

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.button = QPushButton('Click Me!', self)

self.button.clicked.connect(self.show_messagebox)

def show_messagebox(self):

choice = QMessageBox.question(self, 'Change Text?', 'Would you like to change the button text?',

QMessageBox.Yes | QMessageBox.No)

#選擇不同的按鈕,有不同選擇

if choice == QMessageBox.Yes:

self.button.setText('Changed!')

elif choice == QMessageBox.No:

pass

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

```python

#調用父類QDialog來使用消息框

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QDialog, QLineEdit, QPushButton

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.resize(300, 100)

self.dialog = SigninPage()

self.btn = QPushButton("調用Dialog", self)

self.btn.clicked.connect(self.my_dialog)

def my_dialog(self):

self.dialog.exec_() #使用exec_()方法可以在主程序中加載一個dialog出來

class SigninPage(QDialog):

def __init__(self):

super(SigninPage, self).__init__()

self.resize(200, 100)

self.line = QLineEdit("我是一個新的dialog", self)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

#### 顏色對話框和字體對話框

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QColorDialog, QFontDialog, QPushButton,QHBoxLayout, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.text_edit = QTextEdit(self)

self.color_btn = QPushButton('Color', self)

self.font_btn = QPushButton('Font', self)

self.color_btn.clicked.connect(lambda: self.open_dialog_func(self.color_btn))

self.font_btn.clicked.connect(lambda: self.open_dialog_func(self.font_btn))

self.h_layout = QHBoxLayout()

self.h_layout.addWidget(self.color_btn)

self.h_layout.addWidget(self.font_btn)

self.v_layout = QVBoxLayout()

self.v_layout.addWidget(self.text_edit)

self.v_layout.addLayout(self.h_layout)

self.setLayout(self.v_layout)

def open_dialog_func(self, btn):

if btn == self.color_btn:

color = QColorDialog.getColor() #獲取顏色框

if color.isValid():

self.text_edit.setTextColor(color) #設置顏色

else:

font, ok = QFontDialog.getFont() #獲取字體的框

if ok:

self.text_edit.setFont(font) #設置字體

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

#### 輸入對話框

輸入對話框一共有五種輸入的方法:

| 方法 | 用法 |

| ------------------ | ---------------------- |

| getItem() | 從下拉框中獲取選項輸入 |

| getInt() | 獲取整型值輸入 |

| getDouble() | 獲取浮點型值輸入 |

| getText() | 獲取字符輸入 |

| getMultiLineText() | 獲取多行字符串輸入 |

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QTextEdit, QPushButton,QGridLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.name_btn = QPushButton('Name', self)

self.gender_btn = QPushButton('Gender', self)

self.age_btn = QPushButton('Age', self)

self.score_btn = QPushButton('Score', self)

self.info_btn = QPushButton('Info', self)

self.name_btn.clicked.connect(lambda: self.open_dialog_func(self.name_btn))

self.gender_btn.clicked.connect(lambda: self.open_dialog_func(self.gender_btn))

self.age_btn.clicked.connect(lambda: self.open_dialog_func(self.age_btn))

self.score_btn.clicked.connect(lambda: self.open_dialog_func(self.score_btn))

self.info_btn.clicked.connect(lambda: self.open_dialog_func(self.info_btn))

self.name_line = QLineEdit(self)

self.gender_line = QLineEdit(self)

self.age_line = QLineEdit(self)

self.score_line = QLineEdit(self)

self.info_textedit = QTextEdit(self)

self.g_layout = QGridLayout()

self.g_layout.addWidget(self.name_btn, 0, 0, 1, 1)

self.g_layout.addWidget(self.name_line, 0, 1, 1, 1)

self.g_layout.addWidget(self.gender_btn, 1, 0, 1, 1)

self.g_layout.addWidget(self.gender_line,1, 1, 1, 1)

self.g_layout.addWidget(self.age_btn, 2, 0, 1, 1)

self.g_layout.addWidget(self.age_line, 2, 1, 1, 1)

self.g_layout.addWidget(self.score_btn, 3, 0, 1, 1)

self.g_layout.addWidget(self.score_line, 3, 1, 1, 1)

self.g_layout.addWidget(self.info_btn, 4, 0, 1, 1)

self.g_layout.addWidget(self.info_textedit, 4, 1, 1, 1)

self.setLayout(self.g_layout)

def open_dialog_func(self, btn):

if btn == self.name_btn: #QInputDialog為輸入對話框

name, ok = QInputDialog.getText(self, 'Name Input', 'Please enter the name:')

if ok:

self.name_line.setText(name)

elif btn == self.gender_btn:

gender_list = ['Female', 'Male']

gender, ok = QInputDialog.getItem(self, 'Gender Input', 'Please choose the gender:', gender_list, 0, False)

if ok:

self.gender_line.setText(gender)

elif btn == self.age_btn:

age, ok = QInputDialog.getInt(self, 'Age Input', 'Please select the age:')

if ok:

self.age_line.setText(str(age))

elif btn == self.score_btn:

score, ok = QInputDialog.getDouble(self, 'Score Input', 'Please select the score:')

if ok:

self.score_line.setText(str(score))

else:

info, ok = QInputDialog.getMultiLineText(self, 'Info Input', 'Please enter the info:')

if ok:

self.info_textedit.setText(info)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

#### 文件對話框

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QPushButton, QMessageBox, QVBoxLayout,QHBoxLayout, QFileDialog

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.is_saved = True

self.is_saved_first = True

self.path = ''

self.textedit = QTextEdit(self)

self.textedit.textChanged.connect(self.on_textchanged_func) #文本內容改變時自動觸發

self.button = QPushButton('Save', self)

self.button.clicked.connect(self.on_clicked_func)

self.button_2 = QPushButton('Open', self)

self.button_2.clicked.connect(self.open_file_func)

self.h_layout = QHBoxLayout()

self.h_layout.addWidget(self.button)

self.h_layout.addWidget(self.button_2)

self.v_layout = QVBoxLayout()

self.v_layout.addWidget(self.textedit)

self.v_layout.addLayout(self.h_layout)

self.setLayout(self.v_layout)

def on_textchanged_func(self):

if self.textedit.toPlainText():

self.is_saved = False

else:

self.is_saved = True

def on_clicked_func(self):

if self.is_saved_first:

self.save_as_func(self.textedit.toPlainText())

else:

self.save_func(self.textedit.toPlainText())

def save_func(self, text):

with open(self.path, 'w') as f:

f.write(text)

self.is_saved = True

def save_as_func(self, text):

#保存文件的對話框

self.path, _ = QFileDialog.getSaveFileName(self, 'Save File', './', 'Files (*.txt *.log)')

if self.path:

with open(self.path, 'w') as f:

f.write(text)

self.is_saved = True

self.is_saved_first = False

def open_file_func(self):

#打開文本對話框

file, _ = QFileDialog.getOpenFileName(self, 'Open File', './', 'Files (*.txt *.log)')

if file:

with open(file, 'r') as f:

self.textedit.clear()

self.textedit.setText(f.read())

self.is_saved = True

#關閉程序事件

def closeEvent(self, QCloseEvent):

if not self.is_saved:

choice = QMessageBox.question(self, '', 'Do you want to save the text?',

QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)

if choice == QMessageBox.Yes:

self.on_clicked_func()

QCloseEvent.accept()

elif choice == QMessageBox.No:

QCloseEvent.accept()

else:

QCloseEvent.ignore()

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 12、繪圖API:繪制文本 QPainter

drawText()

1.文本

2、各種圖形(直線、點、橢圓、弧、扇形、多變形等)

3、圖形

painter = QPainter()

painter.begin()

painter.drawText()

painter.end()

必須在pantEvent事件中繪制各種元素

#### 用像素繪制正弦曲線QPainter

drawPoint(x,y)

#### 繪制不同的直線QPainter

drawLine()

#### 繪制不同的圖像

rect = QRect(0,10,100,100)

aln:1一個alen等于1/16度

drawArc(rect ,0, 45*16)

#### 繪制帶鉉的弧

drawpie(10,240,100,100,12,130*16)

橢圓

drawEllipse(120,120,150,100)

### 13 組合框QGroupBox和工具箱QToolBox

#### QGroupBox

容器,可以把相同功能的控件放在一起,使得界面更加清晰

```python

import sys

from PyQt5.QtCore import Qt

from PyQt5.QtGui import QPixmap

from PyQt5.QtWidgets import QApplication, QWidget, QGroupBox, QRadioButton, QLabel, QHBoxLayout, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.groupbox_1 = QGroupBox('On and Off', self) # 1

self.groupbox_2 = QGroupBox('Change Color', self)

self.red = QRadioButton('Red', self) # 2

self.blue = QRadioButton('Blue', self)

self.green = QRadioButton('Green', self)

self.yellow = QRadioButton('Yellow', self)

self.color_list = [self.red, self.blue, self.green, self.yellow]

self.on = QRadioButton('On', self) # 3

self.off = QRadioButton('Off', self)

self.pic_label = QLabel(self) # 4

self.h1_layout = QHBoxLayout()

self.h2_layout = QHBoxLayout()

self.h3_layout = QHBoxLayout()

self.all_v_layout = QVBoxLayout()

self.layout_init()

self.radiobutton_init()

self.label_init()

def layout_init(self):

self.h1_layout.addWidget(self.on)

self.h1_layout.addWidget(self.off)

self.groupbox_1.setLayout(self.h1_layout)

self.h2_layout.addWidget(self.red)

self.h2_layout.addWidget(self.blue)

self.h2_layout.addWidget(self.green)

self.h2_layout.addWidget(self.yellow)

self.groupbox_2.setLayout(self.h2_layout)

self.h3_layout.addWidget(self.groupbox_1)

self.h3_layout.addWidget(self.groupbox_2)

self.all_v_layout.addWidget(self.pic_label)

self.all_v_layout.addLayout(self.h3_layout)

self.setLayout(self.all_v_layout)

def radiobutton_init(self):

self.yellow.setChecked(True) # 5

for btn in self.color_list:

btn.clicked.connect(self.change_color_func)

self.off.setChecked(True) # 6

self.off.toggled.connect(self.on_and_off_func)

def label_init(self): # 7

self.pic_label.setPixmap(QPixmap('images/Off.png'))

self.pic_label.setAlignment(Qt.AlignCenter)

def change_color_func(self):

if self.on.isChecked():

path = 'images/{}_light.png'.format([btn.text() for btn in self.color_list if btn.isChecked()][0])

self.pic_label.setPixmap(QPixmap(path))

def on_and_off_func(self):

if self.on.isChecked():

path = 'images/{}_light.png'.format([btn.text() for btn in self.color_list if btn.isChecked()][0])

self.pic_label.setPixmap(QPixmap(path))

else:

self.pic_label.setPixmap(QPixmap('images/Off_light.png'))

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

QToolBox

工具箱,這個工具箱有很多的抽屜,每次只能打開一個,抽屜里面放了很多格式各樣的東西

```python

import sys

from PyQt5.QtGui import QIcon

from PyQt5.QtWidgets import QApplication, QToolBox, QGroupBox, QToolButton, QVBoxLayout

class Demo(QToolBox): # 1

def __init__(self):

super(Demo, self).__init__()

self.groupbox_1 = QGroupBox(self) # 2

self.groupbox_2 = QGroupBox(self)

self.groupbox_3 = QGroupBox(self)

self.toolbtn_f1 = QToolButton(self) # 3

self.toolbtn_f2 = QToolButton(self)

self.toolbtn_f3 = QToolButton(self)

self.toolbtn_m1 = QToolButton(self)

self.toolbtn_m2 = QToolButton(self)

self.toolbtn_m3 = QToolButton(self)

self.v1_layout = QVBoxLayout()

self.v2_layout = QVBoxLayout()

self.v3_layout = QVBoxLayout()

self.addItem(self.groupbox_1, 'Couple One') # 一個Item相當于一個抽屜

self.addItem(self.groupbox_2, 'Couple Two')

self.addItem(self.groupbox_3, 'Couple Three')

self.currentChanged.connect(self.print_index_func) # 5

self.layout_init()

self.groupbox_init()

self.toolbtn_init()

def layout_init(self):

self.v1_layout.addWidget(self.toolbtn_f1)

self.v1_layout.addWidget(self.toolbtn_m1)

self.v2_layout.addWidget(self.toolbtn_f2)

self.v2_layout.addWidget(self.toolbtn_m2)

self.v3_layout.addWidget(self.toolbtn_f3)

self.v3_layout.addWidget(self.toolbtn_m3)

def groupbox_init(self): # 6

self.groupbox_1.setFlat(True)

self.groupbox_2.setFlat(True)

self.groupbox_3.setFlat(True)

self.groupbox_1.setLayout(self.v1_layout)

self.groupbox_2.setLayout(self.v2_layout)

self.groupbox_3.setLayout(self.v3_layout)

def toolbtn_init(self): # 7

self.toolbtn_f1.setIcon(QIcon('images/cartoon1.ico'))

self.toolbtn_f2.setIcon(QIcon('images/cartoon2.ico'))

self.toolbtn_f3.setIcon(QIcon('images/cartoon3.ico'))

self.toolbtn_m1.setIcon(QIcon('images/cartoon4.ico'))

self.toolbtn_m2.setIcon(QIcon('images/close.ico'))

self.toolbtn_m3.setIcon(QIcon('images/cut.ico'))

def print_index_func(self):

couple_dict = {

0: 'Couple One',

1: 'Couple Two',

2: 'Couple Three'

}

sentence = 'You are looking at {}.'.format(couple_dict.get(self.currentIndex()))

print(sentence)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 14 窗口坐標

窗口分為三塊:標題欄,邊框,和客戶區

+ x()——得到窗口左上角在顯示屏屏幕上的x坐標;

+ y()——得到窗口左上角在顯示屏屏幕上的y坐標;

+ pos()——得到窗口左上角在顯示屏屏幕上的x和y坐標,類型為QPoint();

+ geometry().x()——得到客戶區左上角在顯示屏屏幕上的x坐標;

+ geometry().y()——得到客戶區左上角在顯示屏屏幕上的y坐標;

+ geometry()——得到客戶區左上角在顯示屏屏幕上的x和y坐標,以及客戶區的寬度和長度,類型為QRect();

+ width()——得到客戶區的寬度;

+ height()——得到客戶區的長度;

+ geometry().width()——得到客戶區的寬度;

+ geometry().height()——得到客戶區的長度;

+ frameGeometry().width()——得到窗口的寬度;

+ frameGeometry().height()——得到窗口的長度;

```python

import sys

from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':

app = QApplication(sys.argv)

widget = QWidget()

widget.resize(200, 200) # 1

widget.move(100, 100) # 2

# widget.setGeometry(100, 100, 200, 200) # 3

widget.show()

print('-----------------x(), y(), pos()-----------------')

print(widget.x())

print(widget.y())

print(widget.pos())

print('-----------------width(), height()-----------------')

print(widget.width())

print(widget.height())

print('-----------------geometry().x(), geometry.y(), geometry()-----------------')

print(widget.geometry().x())

print(widget.geometry().y())

print(widget.geometry())

print('-----------------geometry.width(), geometry().height()-----------------')

print(widget.geometry().width())

print(widget.geometry().height())

print('-----------------frameGeometry().x(), frameGeometry().y(), frameGeometry(), '

'frameGeometry().width(), frameGeometry().height()-----------------')

print(widget.frameGeometry().x())

print(widget.frameGeometry().y())

print(widget.frameGeometry())

print(widget.frameGeometry().width())

print(widget.frameGeometry().height())

sys.exit(app.exec_())

```

### 15 事件處理

#### 窗口關閉事件

```python

def closeEvent(self, QCloseEvent) 是QWidget的窗口關閉函數,通過重寫這個函數,可以定制化關閉的功能

QCloseEvent.accept() #接受窗口關閉的操作

QCloseEvent.ignore() #不接受窗口關閉的操作

```

#### 鼠標事件

```python

def mouseMoveEvent(self, QMouseEvent):

def mousePressEvent(self, QMouseEvent):

def mouseReleaseEvent(self, QMouseEvent):

def mouseDoubleClickEvent(self, QMouseEvent):

這四個函數都是QWidget的函數,作用分別是:鼠標移動觸發、鼠標按下的時候觸發、鼠標釋放的時候觸發

和鼠標雙擊的時候觸發。通過重構這四個函數,可以對鼠標事件進行定制化的功能。

```

+ Qt.LeftButton 、Qt.MidButton、Qt.RightButton:分別表示點擊的是左鍵、之間鍵、右鍵。

+ QMouseEvent.x()、QMouseEvent.y()表示獲取鼠標離程序的坐標

+ QMouseEvent.globalX()、QMouseEvent.globalY()表示鼠標離桌面的坐標

+ self.setMouseTracking(True) 表示讓窗口始終追蹤鼠標。

#### 鍵盤事件

```python

def keyPressEvent(self,QkeyEvent)

def keyReleaseEvent(self,QkeyEvent)

這個兩個函數式QWidget的函數,分別表示鍵盤任意鍵的按下和釋放。

```

+ QkeyEvent 表示接受的按鍵的值

### 16 拖放與剪貼板

拖放和剪貼板的功能原理基礎都是QMimeData類

| 判斷函數 | 獲取函數 | 設置函數 | MIME類型 |

| ---------- | ----------- | -------------- | ------------------- |

| hasText() | text() | setText() | text/plain |

| hasHtml() | html() | setHtml() | text/html |

| hasUrls() | urls() | setUrls() | text/uri-list |

| hasImage() | imageData() | setImageData() | image/* |

| hasColor() | colorData() | setColorData() | application/x-color |

#### 拖放

拖放分為拖動和放下兩個動作,它們涉及到以下的事件:

+ DragEnterEvent: 所拖動目標進入接收該事件的窗口或控件時觸發;

+ DragMoveEvent: 所拖動目標進入窗口或控件后,繼續被拖動時觸發;

+ DragLeaveEvent: 所拖動目標離開窗口或控件時觸發;

+ DropEvent: 所拖動目標被放下時觸發。

#### 剪貼板

```python

from PyQt5.QtWidgets import QApplication

self.clipboard = QApplication.clipboard() #實例化一個剪貼板

self.clipboard.setText("xxxxxx") #將內容放在剪切板中

self.clipboard.text() #取出剪貼板中的內容

```

+ dataChanged 當剪貼板中的內容發生變化時候,將觸發這個信號。

剪貼板的常用方法

### 17 列表控件、樹形控件、表格控件

QListWidget列表控件應當與QListWidgetItem一起使用,后者作為項被添加入列表控件中

QTreeWidget樹形控件應當與QTreeWidgetItem一起使用,后者作為項被添加入列表控件中

QTableWidget表格控件應當與QTableWidgetItem一起使用,后者作為項被添加入列表控件中

#### 列表控價

```python

from PyQt5.QtWidgets import QListWidget,QListWidgetItem

self.listwidget_1 = QListWidget(self) #實例化一個列表控件

#添加列表控件的幾種方式:

1.

self.item = QListWidgetItem(text)

self.listwidget_1.addItem(self.item)

2

self.item_6 = QListWidgetItem('Item 6', self.listwidget_1)

3

self.listwidget_1.addItem('Item 7')

4

str_list = ['Item 9', 'Item 10']

self.listwidget_1.addItems(str_list)

5

self.item_8 = QListWidgetItem('Item 8')

self.listwidget_1.insertItem(8, self.item_8)

```

+ currentItem() 獲取當前點擊的項

#### 樹形控件

```python

from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem

self.tree = QTreeWidget(self) #實例化一個樹形控件

self.tree.setColumnCount(2) #設置顯示的列數,默認是一列的

self.tree.setHeaderLabels(['Install Components', 'Test']) #設置顯示的標題

#設置第一級項

self.preview = QTreeWidgetItem(self.tree)

self.preview.setText(0, 'Preview')

#設置第二級項

self.qt5112 = QTreeWidgetItem()

self.qt5112.setText(0, 'Qt 5.11.2 snapshot')

self.qt5112.setCheckState(0, Qt.Unchecked)

self.preview.addChild(self.qt5112)

#設置第三級項

choice_list = ['macOS', 'Android x86', 'Android ARMv7', 'Sources', 'iOS']

for i, c in enumerate(choice_list):

item = QTreeWidgetItem(self.qt5112)

item.setText(0, c)

item.setCheckState(0, Qt.Unchecked)

```

+ itemClicked 表示點擊item時自動觸發

#### 表格控件

```python

from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem

class Demo(QTableWidget):

self.setRowCount(6) #設定表格的行數

self.setColumnCount(6) #設定表格的列數

self.setColumnWidth(0, 30) #設定列的大小

self.setRowHeight(0, 30) #設定行的大小

self.setHorizontalHeaderLabels(['h1', 'h2', 'h3', 'h4', ' h5', 'h6']) #設置列名

self.setVerticalHeaderLabels(['t1', 't2', 't3', 't4', 't5', 't6']) #設置行的名

self.item_1 = QTableWidgetItem('Hi') #設置表格里面的內容

self.setItem(0, 0, self.item_1)

self.setSpan(2, 2, 2, 2) #設置居中的格式,表示2行2列中有2列2行集中

```

### 18 滾動區域QScrollArea和滾動條QScollBar

```python

import sys

from PyQt5.QtCore import Qt

from PyQt5.QtGui import QPixmap

from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QScrollArea, QScrollBar,QHBoxLayout, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.label = QLabel(self)

self.label.setPixmap(QPixmap('image.jpg'))

self.label.setScaledContents(True) #設置圖片會隨著label便簽的變化而變化大小

self.scroll_area = QScrollArea(self) #初始化一個滾動區域

self.scroll_area.setWidget(self.label)

#將滾動區域的水平滾動條關閉

self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

self.scrollbar = QScrollBar(Qt.Horizontal, self) #實例化一個水平的滾動條

#水平滾動條的大小和滾動區域水平滾動條的大小相同

self.scrollbar.setMaximum(self.scroll_area.horizontalScrollBar().maximum())

self.bigger_btn = QPushButton('Zoom in', self)

self.smaller_btn = QPushButton('Zoom out', self)

self.bigger_btn.clicked.connect(self.bigger_func)

self.smaller_btn.clicked.connect(self.smaller_func)

self.scrollbar.valueChanged.connect(self.sync_func)

self.h_layout = QHBoxLayout()

self.h_layout.addWidget(self.bigger_btn)

self.h_layout.addWidget(self.smaller_btn)

self.v_layout = QVBoxLayout()

self.v_layout.addWidget(self.scroll_area)

self.v_layout.addWidget(self.scrollbar)

self.v_layout.addLayout(self.h_layout)

self.setLayout(self.v_layout)

def bigger_func(self):

self.label.resize(self.label.width()*1.2, self.label.height()*1.2)

self.scrollbar.setMaximum(self.scroll_area.horizontalScrollBar().maximum())

def smaller_func(self):

self.label.resize(self.label.width() * 0.8, self.label.height() * 0.8)

self.scrollbar.setMaximum(self.scroll_area.horizontalScrollBar().maximum())

def sync_func(self):

#設置滾動區域水平滾動條的大小等于滾動條的大小

self.scroll_area.horizontalScrollBar().setValue(self.scrollbar.value())

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 層疊樣式表

```python

import sys

from PyQt5.QtWidgets import QWidget, QApplication, QListWidget, QStackedWidget,\

QHBoxLayout, QFormLayout, QRadioButton, QLabel, QLineEdit, QCheckBox

class StackUi1(QWidget):

def __init__(self):

super().__init__()

layout = QFormLayout()

layout.addRow('姓名', QLineEdit())

layout.addRow('地址', QLineEdit())

self.setLayout(layout)

class StackUi2(QWidget):

def __init__(self):

super().__init__()

layout = QFormLayout()

sex = QHBoxLayout()

sex.addWidget(QRadioButton('男'))

sex.addWidget(QRadioButton('女'))

layout.addRow(QLabel('性別'), sex)

layout.addRow('生日', QLineEdit())

self.setLayout(layout)

class StackUi3(QWidget):

def __init__(self):

super().__init__()

layout = QHBoxLayout()

# 添加控件到布局中

layout.addWidget(QLabel('科目'))

layout.addWidget(QCheckBox('物理'))

layout.addWidget(QCheckBox('高數'))

self.setLayout(layout)

class Demo(QWidget):

def __init__(self):

super().__init__()

#設置窗口的初始位置和大小

self.setGeometry(300, 300, 30, 30)

self.setWindowTitle("層疊樣式")

# 創建三個小控件

self.stack1 = StackUi1()

self.stack2 = StackUi2()

self.stack3 = StackUi3()

#創建列表窗口

self.left_list = QListWidget()

# 創建層疊樣式表

self.stack = QStackedWidget()

self.init_stack()

self.init_layout()

self.left_list.currentRowChanged.connect(self.display)

def init_layout(self):

# 水平布局,添加部件到布局中

h_layout = QHBoxLayout()

h_layout.addWidget(self.left_list)

h_layout.addWidget(self.stack)

self.setLayout(h_layout)

def init_stack(self):

# 創建列表窗口,添加條目

self.left_list.insertItem(0, "聯系方式")

self.left_list.insertItem(1, "個人信息")

self.left_list.insertItem(2, "教育程度")

self.stack.addWidget(self.stack1)

self.stack.addWidget(self.stack2)

self.stack.addWidget(self.stack3)

def display(self, i):

# 設置當前可見的選項卡的索引

self.stack.setCurrentIndex(i)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 主窗口QMainWindow

主窗口類為我們提供了菜單欄(Menu Bar)、工具欄(Tool Bar)、控件停靠區域(Docke Widgets)和狀態欄(Status Bar)。

### 19 Qt中的多線程

```PYTHON

import sys

from PyQt5.QtCore import Qt, QThread, pyqtSignal

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.button = QPushButton('Count', self)

self.button.clicked.connect(self.count_func)

self.label = QLabel('0', self)

self.label.setAlignment(Qt.AlignCenter)

self.my_thread = MyThread()

self.my_thread.my_signal.connect(self.set_label_func) # 3

self.v_layout = QVBoxLayout()

self.v_layout.addWidget(self.label)

self.v_layout.addWidget(self.button)

self.setLayout(self.v_layout)

def count_func(self):

self.my_thread.start()

def set_label_func(self, num): # 4

self.label.setText(num)

class MyThread(QThread):

my_signal = pyqtSignal(str) # 1

def __init__(self):

super(MyThread, self).__init__()

self.count = 0

def run(self):

while True:

print(self.count)

self.count += 1

self.my_signal.emit(str(self.count)) # 2

self.sleep(1)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 20、QT中的信號與槽

+ 一個信號連接一個槽

+ 多個信號連接一個槽

+ 一個信號連接另一個信號

+ 自定義信號

```python

#自定義信號

import sys

from PyQt5.QtCore import pyqtSignal # 1

from PyQt5.QtWidgets import QApplication, QWidget, QLabel

class Demo(QWidget):

my_signal = pyqtSignal() #定義信號 # 2

def __init__(self):

super(Demo, self).__init__()

self.label = QLabel('Hello World', self)

self.my_signal.connect(self.change_text) # 3

def change_text(self): #槽接受自定義信號

if self.label.text() == 'Hello World':

self.label.setText('Hello PyQt5')

else:

self.label.setText('Hello World')

def mousePressEvent(self, QMouseEvent): # 4

self.my_signal.emit() #觸發信號

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

```pyt

#攜帶參數的自定義信號

import sys

from PyQt5.QtCore import pyqtSignal

from PyQt5.QtWidgets import QApplication, QWidget

class Demo(QWidget):

my_signal = pyqtSignal(int) #攜帶的值,需要說明類型

def __init__(self):

super(Demo, self).__init__()

self.my_signal.connect(self.signal_slot)

def signal_slot(self, x): 形參x接收

print('信號發射成功')

print(x)

def mouseDoubleClickEvent(self, event):

pos_x = event.pos().x()

self.my_signal.emit(pos_x)#觸發信號時攜帶參數

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

```python

#把一個窗口的信息傳遞給另一個窗口時,可以把第一窗口期的實例化對象傳給第二個窗口,但是這樣的話,兩個窗口的耦合性太強了。可以在第一個窗口建立一個槽函數,第二個窗口建立信號。

import sys

from PyQt5.QtCore import pyqtSignal

from PyQt5.QtWidgets import QApplication, QWidget, QTextBrowser, QLineEdit, QPushButton, QHBoxLayout

class Window1(QTextBrowser): # 1

def __init__(self):

super(Window1, self).__init__()

def show_msg_slot(self, msg):

self.append(msg)

class Window2(QWidget): # 2

win2_signal = pyqtSignal(str)

def __init__(self):

super(Window2, self).__init__()

self.line = QLineEdit()

self.send_btn = QPushButton('發送')

self.send_btn.clicked.connect(self.send_to_win1_slot)

h_layout = QHBoxLayout()

h_layout.addWidget(self.line)

h_layout.addWidget(self.send_btn)

self.setLayout(h_layout)

def send_to_win1_slot(self):

msg = self.line.text()

self.win2_signal.emit(msg)

if __name__ == '__main__': # 3

app = QApplication(sys.argv)

win1 = Window1()

win1.show()

win2 = Window2()

win2.show()

win2.win2_signal.connect(win1.show_msg_slot) #信號與槽在此綁定,可以減少兩個類之間的耦合性

sys.exit(app.exec_())

```

```python

#線程之間的通信

import sys

import random

from PyQt5.QtCore import pyqtSignal, QThread

from PyQt5.QtWidgets import QApplication, QWidget, QTextBrowser, QPushButton, QVBoxLayout

class ChildThread(QThread):

child_signal = pyqtSignal(str) # 1

def __init__(self):

super(ChildThread, self).__init__()

def run(self): # 2

result = str(random.randint(1, 10000))

for _ in range(100000000):

pass

self.child_signal.emit(result)

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

self.browser = QTextBrowser() # 3

self.btn = QPushButton('開始爬取')

self.btn.clicked.connect(self.start_thread_slot)

v_layout = QVBoxLayout()

v_layout.addWidget(self.browser)

v_layout.addWidget(self.btn)

self.setLayout(v_layout)

self.child_thread = ChildThread() # 4

self.child_thread.child_signal.connect(self.child_thread_done_slot)

def start_thread_slot(self):

self.browser.clear()

self.browser.append('爬蟲開啟')

self.btn.setText('正在爬取')

self.btn.setEnabled(False)

self.child_thread.start()

def child_thread_done_slot(self, msg):

self.browser.append(msg)

self.browser.append('爬取結束')

self.btn.setText('開始爬取')

self.btn.setEnabled(True)

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

### 21、布局管理

+ 垂直布局QVBoxLaout

```python

#通用情況

v_layout = QVBoxLaout()

v_latout.addWiget(xxxx1)

v_latout.addWiget(xxxx2)

self.setLayout(v_latout)

```

+ 水平布局QHBoxLayout

+ 混合使用QVBoxLaout和QHBoxLayout

+ 表單布局QFormLayout

```python

f_layout = QFormLayout()

v_layout = QVBoxLayout()

f_layout.addRow(xxx1, xxx2) #前面的為label,后面的為line

v_layout.addLayout(self.f_layout) #將表單布局加入其他的布局中

```

+ 網格布局QGridLaout

```python

grid_layout = QGridLayout()

grid_layout.addWidget(xxxx1, 0, 0, 1, 1) #第一行第一列,標簽的大小為占一行一列

```

### 學會使用文檔

1 安裝QtAssistant軟件,并下載文檔查看

2 在線文檔

如果不用QtAssistant軟件的話,我們也可以通過以下鏈接來進行文檔查詢:

http://pyqt.sourceforge.net/Docs/PyQt5/class_reference.html

[文檔地址1:https://doc.qt.io/qtforpython/modules.html](https://doc.qt.io/qtforpython/modules.html)

[文檔地址2:https://www.riverbankcomputing.com/static/Docs/PyQt5/sip-classes.html](https://www.rrbankcomputing.com/static/Docs/PyQt5/sip-classes.html)

## PyQt5圖形界面編程

### QWidget

```python

#屬性

setWindowTitle('學點編程吧出品') #設置標題

resize(250, 150) #調整控件的大小

move(300, 300) #移動到控件的位置,如果是最外層的控件則是屏幕的位置

from PyQt5.QtGui import QIcon

setWindowIcon(QIcon('xdbcb8.ico'))

setMouseTracking(True) #開啟鼠標跟蹤的功能,鼠標沒有按下也會接受鼠標的移動事件

update() #刷新控件。

```

```python

#方法

show() #顯示控件

def keyPressEvent(self, e): #QWdiget自帶的事件處理程序,當按下鍵盤時自動觸發,e觸發的事件,e.key()鍵盤輸入的值

def mouseMoveEvent(self, event): #QWiget控件自帶事件處理程序,當鼠標移動的時候觸發,需要開啟鼠標跟蹤的功能, event.x event.y 表示鼠標當前位置的坐標。

def mousePressEvent(self, e): #QWidget控件自帶事件處理程序,當單擊鼠標的時候自動觸發

def eventFilter(self, object, event) #事件過濾器。

```

### QDialog

```python

QWidget 是QDialog的父類

done(1)#退出控件

```

### PushButton

```python

QPushButton('按鍵名稱', self) #控件實例

setToolTip('點擊這里猜數字') #鼠標懸停在按鍵上面的時候出現提示,支持富文本

clicked #點擊事件,單擊松開為一個完整的點擊事件

```

### QLineEdit

```Python

QLineEdit('內容', self) #控件實例

text() #控件的內容

setFocus() #讓焦點置于文本框中,使文本處于選中的狀態

selectAll() #表示選文本框時,對里面的內容進行全選

clear() #對內容進行清除

from PyQt5.QtCore import Qt

setContextMenuPolicy(Qt.NoContextMenu) #禁止在文本框內右鍵彈出菜單

setPlaceholderText() #文本框為空的時候出現提示

setEchoMode(QLineEdit.Password) #設置顯示方式為密碼,輸入的值將不可見

from PyQt5.QtCore import QRegExp

from PyQt5.QtGui import QRegExpValidator

regx = QRegExp("^[a-zA-Z][0-9A-Za-z]{14}$") #在QLinEdit中加入正則顯示器

validator = QRegExpValidator(regx, ledit) #構造一個驗證器,該父對象接受與正則表達式匹配的所有字符串

setValidator(validator)

```

#顯示模式

| 方式 | 描述 |

| ---------------------------- | ------------------------------------------------ |

| QLineEdit.Normal | 顯示輸入的字符。這是默認值 |

| QLineEdit.NoEcho | 不要顯示任何東西,這可能適用于密碼長度保密的密碼 |

| QLineEdit.Password | 顯示密碼字符 |

| QLineEdit.PasswordEchoOnEdit | 在編輯時顯示字符,其他時候顯示密碼 |

### QMeeageBox

```python

QMessageBox.about(self, '內容') #控件實例

QMessageBox.question(self, "標題", "內容", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) #

QMessageBox.critical(self, "內容", )

QMessageBox.warning(self, "內容", )

QMessageBox.information(self, "內容", )

msgBox = QMessageBox(QMessageBox.NoIcon, '關于','不要意淫了,早點洗洗睡吧!') #基于屬性的方式設置消息框的圖片

msgBox.setIconPixmap(QPixmap("images/screen2.jpg"))

```

```python

import sys

from PyQt5.QtWidgets import QMessageBox, QApplication, QWidget, QPushButton

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

btn = QPushButton("按鍵", self)

btn.clicked.connect(self.closeEvent)

def closeEvent(self, event):

reply = QMessageBox.question(self, '確認', '確認退出嗎', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

if reply == QMessageBox.Yes:

event.accept()

else:

pass

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

消息對話框的調用可以分為兩種1、靜態函數的調用;2、基于屬性的調用,上面的例子是靜態函數的調用,下面的例子是基于屬性的調用

```python

import sys

from PyQt5.QtWidgets import QMessageBox, QApplication, QWidget, QPushButton

from PyQt5.QtWidgets import QCheckBox, QLabel

class Demo(QWidget):

def __init__(self):

super(Demo, self).__init__()

btn = QPushButton("按鍵", self)

self.la = QLabel('這里將會顯示我們選擇的按鈕信息', self)

self.la.move(20,20)

btn.clicked.connect(self.closeEvent)

def closeEvent(self, event):

cb = QCheckBox('所有文檔都按此操作')

msgBox = QMessageBox()

msgBox.setWindowTitle('警告')

msgBox.setIcon(QMessageBox.Warning)

msgBox.setText('這是一個警告消息對話框')

msgBox.setInformativeText('出現更改愿意保存嗎?')

Save = msgBox.addButton('按鍵1', QMessageBox.AcceptRole)

msgBox.addButton('按鍵2', QMessageBox.RejectRole)

msgBox.addButton('按鍵3', QMessageBox.DestructiveRole)

msgBox.setDefaultButton(Save)

msgBox.setCheckBox(cb)

cb.stateChanged.connect(self.check)

reply = msgBox.exec_()

if reply == QMessageBox.AcceptRole:

self.la.setText('你選擇了保存!')

elif reply == QMessageBox.RejectRole:

self.la.setText('你選擇了取消!')

else:

self.la.setText('你選擇了不保存!')

def check(self):

if self.sender().isChecked():

self.la.setText('你打勾了哦')

else:

self.la.setText('怎么又不打了啊')

if __name__ == '__main__':

app = QApplication(sys.argv)

demo = Demo()

demo.show()

sys.exit(app.exec_())

```

按鍵的類型

![preview](https://pic1.zhimg.com/v2-41d34adff13956dff87681ed73bb5e04_r.jpg)

### QLabel

```python

QLabel('內容',self)

setText("新的內容")

```

### QCheckBox

```python

Qt.Checked #2

Qt.PartiallyChecked #半選1

Qt.UnChecked #0

isChecked() #查詢狀態全選為True,半選為True,未選中為False

checkState() #查詢狀態,全選為2,半選為1,未選為0

setChecked(True) #設置狀態,True為全選,False為未選中 ,0為未選,1為半選不需要使能半選功能,2為全選

setTristate() #使能按鍵的半選功能,

```

### QDial

```python

valueChanged #值發生改變的信號

```

### QSlider

```python

```

### QPaintert

```python

drawLine(0, 0, self.pos.x(), self.pos.y())# 起點的坐標x,起點的坐標y,終點坐標x,終點坐標y

```

### 信號與槽

```python

#coding=utf-8

import sys

from PyQt5.QtWidgets import (QApplication, QWidget, QMessageBox)

from PyQt5.QtCore import (pyqtSignal, QObject)

class Signal(QObject):

showmouse = pyqtSignal()

class Example(QWidget):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.setGeometry(200, 200, 300, 300)

self.setWindowTitle('學點編程吧')

self.s = Signal()

self.s.showmouse.connect(self.about)

self.show()

def about(self):

QMessageBox.about(self,'鼠標','你點鼠標了吧!')

def mousePressEvent(self, e):

self.s.showmouse.emit()

if __name__ == '__main__':

app = QApplication(sys.argv)

ex = Example()

sys.exit(app.exec_())

```

### 布局

```python

#QHBoxLayout,QVBoxLayout

addWidget(bt) #布局中增加控件

widget.setLayout(vbox)#控件中設置布局

addStretch(1) #控件中增加一個拉繩因子,里面的參數表示QSpacerItem的個數

#QGridLayout

addWidget(控件,0,0,3,0) #哪行,哪列,占多少行,占多少列

#QFormLayout

addRow(控件1,控件2)

```

### 顏色對話框

```python

col = QColorDialog.getColor() #打開顏色對話框,如果選擇的顏色有效,則設置TextEdit問選擇的當前顏色

if col.isValid():

self.tx.setTextColor(col)

```

### 字體對話框

```python

font, ok = QFontDialog.getFont() #打開顏色對話框,如果ok存在表示存在字體

tx.setCurrentFont(font) #TextEdit 設置選擇的字體

```

### 文件對話框

```python

fname = QFileDialog.getOpenFileName(self, '打開文件','./') #打開單個文件

fname = QFileDialog.getOpenFileName(self, '打開文件','./',("Images (*.png *.xpm *.jpg)")) #對打開的文件進行過濾

```

### QProgressDiaglog

```python

QProgressDialog(self)

setWindowTitle("請稍等") #設置標題

setLabelText("正在操作...") #設置內容

setCancelButtonText("取消") #添加按鍵

setWindowModality(Qt.WindowModal) #設置模式

setMinimumDuration(5) #設置最小顯示時間,自動計算花費時間,如果小于設置時間不顯示進度條

setRange(0,num) #進度條的范圍

setValue(i) #設置進度條的值

progress.wasCanceled(): #為True表示關閉進度條

```

#進度條的模式

| 屬性 | 描述 |

| ------------------- | ---------------------------------- |

| Qt.NonModal | 窗口不是模態的,不會阻止到其他輸入 |

| Qt.WindowModal | 單個模態窗口 |

| Qt.ApplicationModal | 所有窗口模態 |

```python

from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QLabel, QLineEdit, QMessageBox, QProgressDialog)

from PyQt5.QtCore import Qt

import sys

class Example(QWidget):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.resize(300,150)

self.setWindowTitle("微信公眾號:學點編程吧--進度對話框")

self.lb = QLabel("文件數量",self)

self.lb.move(20,40)

self.bt1 = QPushButton('開始',self)

self.bt1.move(20,80)

self.edit = QLineEdit('100000',self)

self.edit.move(100,40)

self.show()

self.bt1.clicked.connect(self.showDialog)

def showDialog(self):

num = int(self.edit.text())

progress = QProgressDialog(self)

progress.setWindowTitle("請稍等")

progress.setLabelText("正在操作...")

progress.setCancelButtonText("取消")

progress.setMinimumDuration(5)

progress.setWindowModality(Qt.WindowModal)

progress.setRange(0,num)

for i in range(num):

progress.setValue(i)

if progress.wasCanceled():

QMessageBox.warning(self,"提示","操作失敗")

break

else:

progress.setValue(num)

QMessageBox.information(self,"提示","操作成功")

if __name__ == '__main__':

app = QApplication(sys.argv)

ex = Example()

sys.exit(app.exec_()

```

### 雜

```python

from PyQt5.QtCore import QCoreApplication

QCoreApplication.instance().quit # QcoreApplication包含主事件循環,它處理和調度所有事件,instance()表示當前的實例。

```

一鍵復制

編輯

Web IDE

原始數據

按行查看

歷史

總結

以上是生活随笔為你收集整理的qtextedit 默认文案_QT中常用的控件说明.md的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产综合在线观看 | 久久精品国产99久久6动漫 | 国产黄在线观看免费观看不卡 | 无码av免费一区二区三区试看 | 国产suv精品一区二区五 | 亚洲综合精品香蕉久久网 | 丰满少妇人妻久久久久久 | 国产成人精品优优av | 欧美兽交xxxx×视频 | 国内精品人妻无码久久久影院蜜桃 | 久久99精品国产麻豆蜜芽 | 国产激情艳情在线看视频 | 国产精品久久久久9999小说 | 中文字幕无线码 | 久久亚洲日韩精品一区二区三区 | 99久久精品午夜一区二区 | 日日摸日日碰夜夜爽av | 小sao货水好多真紧h无码视频 | 婷婷六月久久综合丁香 | 国产精品对白交换视频 | 亚洲成av人片天堂网无码】 | 内射白嫩少妇超碰 | 精品无码国产一区二区三区av | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 中文字幕精品av一区二区五区 | 午夜精品一区二区三区在线观看 | 国产69精品久久久久app下载 | 国产精品亚洲一区二区三区喷水 | 中文字幕无码免费久久9一区9 | 天堂久久天堂av色综合 | av无码久久久久不卡免费网站 | 国产精品久久久久7777 | 午夜精品一区二区三区在线观看 | 日韩欧美群交p片內射中文 | 天天av天天av天天透 | 欧美激情综合亚洲一二区 | 免费国产成人高清在线观看网站 | 成人性做爰aaa片免费看不忠 | 久久久久久久人妻无码中文字幕爆 | 白嫩日本少妇做爰 | 日韩亚洲欧美精品综合 | 国产欧美熟妇另类久久久 | 麻豆精品国产精华精华液好用吗 | 性做久久久久久久免费看 | 国产成人精品久久亚洲高清不卡 | 18精品久久久无码午夜福利 | 无码人妻精品一区二区三区不卡 | 亚洲一区二区三区偷拍女厕 | 国产激情一区二区三区 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 狠狠cao日日穞夜夜穞av | 天海翼激烈高潮到腰振不止 | 国产偷抇久久精品a片69 | 亚洲色欲色欲天天天www | 荫蒂添的好舒服视频囗交 | 一本久久a久久精品vr综合 | 国产精品无套呻吟在线 | 国产午夜无码精品免费看 | 国产真实伦对白全集 | 国产99久久精品一区二区 | 国产精品亚洲lv粉色 | 久9re热视频这里只有精品 | 午夜精品一区二区三区在线观看 | 亚洲人成网站免费播放 | 免费看男女做好爽好硬视频 | 国产莉萝无码av在线播放 | 又粗又大又硬毛片免费看 | 中文字幕乱码亚洲无线三区 | 亚洲精品一区二区三区大桥未久 | 人人超人人超碰超国产 | 夜精品a片一区二区三区无码白浆 | 真人与拘做受免费视频 | 亚洲码国产精品高潮在线 | 久久久中文久久久无码 | 国产又爽又猛又粗的视频a片 | 日本乱人伦片中文三区 | 国产极品美女高潮无套在线观看 | 中文字幕无码日韩欧毛 | 久久精品99久久香蕉国产色戒 | 任你躁在线精品免费 | 国产精品美女久久久 | 婷婷五月综合激情中文字幕 | 99久久婷婷国产综合精品青草免费 | 亚洲色大成网站www | 国产成人一区二区三区别 | 国产色精品久久人妻 | 久久国产精品精品国产色婷婷 | 国产亚av手机在线观看 | 久久人人97超碰a片精品 | 日日干夜夜干 | 欧美亚洲国产一区二区三区 | 亚洲色欲色欲欲www在线 | 国产精品无码mv在线观看 | 日本护士xxxxhd少妇 | 国产在线精品一区二区三区直播 | 亚洲国产精品毛片av不卡在线 | 国产精品igao视频网 | 成人av无码一区二区三区 | 国产亚洲tv在线观看 | 熟妇人妻中文av无码 | 国产情侣作爱视频免费观看 | 亚洲日韩av一区二区三区四区 | 最新国产乱人伦偷精品免费网站 | 久久人人爽人人爽人人片av高清 | 久久久久亚洲精品中文字幕 | 激情综合激情五月俺也去 | 亚洲一区二区三区国产精华液 | 久久精品99久久香蕉国产色戒 | 国产人妻人伦精品1国产丝袜 | 亚洲一区二区观看播放 | 国产人妻精品一区二区三区 | 午夜精品一区二区三区在线观看 | 精品国产麻豆免费人成网站 | 成人性做爰aaa片免费看不忠 | 亚洲va中文字幕无码久久不卡 | 99久久精品午夜一区二区 | 国产亚洲精品久久久久久国模美 | 一个人免费观看的www视频 | 野狼第一精品社区 | 国产高清av在线播放 | 少妇无码av无码专区在线观看 | 国产精品久久久 | 中文无码伦av中文字幕 | 国产一区二区三区影院 | 免费国产成人高清在线观看网站 | 国产成人综合色在线观看网站 | 18禁黄网站男男禁片免费观看 | 麻豆av传媒蜜桃天美传媒 | 亚洲日韩一区二区三区 | 伦伦影院午夜理论片 | 国产精品18久久久久久麻辣 | 中文字幕日产无线码一区 | 成人一在线视频日韩国产 | 国产内射爽爽大片视频社区在线 | 久久久精品456亚洲影院 | 欧美日韩色另类综合 | 麻豆成人精品国产免费 | 日日碰狠狠躁久久躁蜜桃 | 久久亚洲精品中文字幕无男同 | 精品国精品国产自在久国产87 | 色综合久久88色综合天天 | 日本大香伊一区二区三区 | 美女毛片一区二区三区四区 | 国产无套粉嫩白浆在线 | 婷婷五月综合缴情在线视频 | 精品亚洲韩国一区二区三区 | 久久人人97超碰a片精品 | 精品国产乱码久久久久乱码 | 国产激情无码一区二区 | 黑人大群体交免费视频 | 国模大胆一区二区三区 | 欧美第一黄网免费网站 | 永久免费精品精品永久-夜色 | 国产成人午夜福利在线播放 | 香港三级日本三级妇三级 | 久久精品中文闷骚内射 | 国产精品美女久久久久av爽李琼 | 荡女精品导航 | 性色av无码免费一区二区三区 | 无码人妻出轨黑人中文字幕 | 欧美成人免费全部网站 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 欧美精品无码一区二区三区 | 色综合久久88色综合天天 | 成人无码视频在线观看网站 | 在线观看免费人成视频 | 久久精品丝袜高跟鞋 | 久久亚洲日韩精品一区二区三区 | 午夜福利不卡在线视频 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 免费无码av一区二区 | 久久99精品国产.久久久久 | 国产人妻人伦精品1国产丝袜 | 一本色道婷婷久久欧美 | 一本色道久久综合亚洲精品不卡 | 欧洲欧美人成视频在线 | 日产国产精品亚洲系列 | 日韩精品无码免费一区二区三区 | 亚洲国产精品久久久天堂 | 狠狠色噜噜狠狠狠狠7777米奇 | 一个人看的视频www在线 | 国产高清av在线播放 | 国产精品亚洲综合色区韩国 | 秋霞成人午夜鲁丝一区二区三区 | √天堂资源地址中文在线 | 最近中文2019字幕第二页 | 久久午夜无码鲁丝片午夜精品 | 少妇厨房愉情理9仑片视频 | 亚洲の无码国产の无码步美 | 欧美 日韩 人妻 高清 中文 | 中文字幕乱妇无码av在线 | 精品日本一区二区三区在线观看 | 97色伦图片97综合影院 | 国内老熟妇对白xxxxhd | 欧美丰满老熟妇xxxxx性 | 国产97在线 | 亚洲 | 久久人人爽人人爽人人片ⅴ | 无码人妻出轨黑人中文字幕 | 欧美野外疯狂做受xxxx高潮 | 亚洲人成影院在线无码按摩店 | 在线视频网站www色 | 日本精品少妇一区二区三区 | 国内少妇偷人精品视频 | 亚洲成色在线综合网站 | 国内丰满熟女出轨videos | 内射老妇bbwx0c0ck | 波多野42部无码喷潮在线 | 377p欧洲日本亚洲大胆 | 成人欧美一区二区三区黑人 | 草草网站影院白丝内射 | 日韩精品无码一本二本三本色 | 国产av人人夜夜澡人人爽麻豆 | 国产亚洲精品久久久久久大师 | 亚洲中文字幕无码一久久区 | 色妞www精品免费视频 | 欧美阿v高清资源不卡在线播放 | 波多野结衣av在线观看 | 乌克兰少妇性做爰 | 精品国产麻豆免费人成网站 | 少妇性l交大片 | 熟妇人妻无码xxx视频 | 日本精品少妇一区二区三区 | 久久精品女人的天堂av | 久久99精品久久久久久动态图 | 精品偷拍一区二区三区在线看 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲综合久久一区二区 | 久久久久国色av免费观看性色 | 国产深夜福利视频在线 | 精品乱子伦一区二区三区 | 97资源共享在线视频 | 欧美日韩在线亚洲综合国产人 | 九九久久精品国产免费看小说 | 熟妇人妻中文av无码 | 一本久道久久综合狠狠爱 | 国产激情精品一区二区三区 | 老熟妇仑乱视频一区二区 | 国产美女精品一区二区三区 | 性欧美疯狂xxxxbbbb | 精品日本一区二区三区在线观看 | 国产一区二区三区影院 | 曰韩少妇内射免费播放 | 欧洲精品码一区二区三区免费看 | 国产人妻久久精品二区三区老狼 | 国语精品一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲国产精品美女久久久久 | 成人精品视频一区二区三区尤物 | 国产精品理论片在线观看 | 精品国产麻豆免费人成网站 | 久久 国产 尿 小便 嘘嘘 | 免费观看又污又黄的网站 | 亚洲小说图区综合在线 | 网友自拍区视频精品 | 娇妻被黑人粗大高潮白浆 | 午夜精品一区二区三区的区别 | 极品尤物被啪到呻吟喷水 | 日韩精品成人一区二区三区 | 中文字幕色婷婷在线视频 | 人妻熟女一区 | 亚洲第一网站男人都懂 | 人妻人人添人妻人人爱 | 99精品久久毛片a片 | 午夜精品久久久久久久久 | 中文精品无码中文字幕无码专区 | 久热国产vs视频在线观看 | 纯爱无遮挡h肉动漫在线播放 | 波多野结衣aⅴ在线 | 亚洲爆乳精品无码一区二区三区 | 图片小说视频一区二区 | 亚洲日韩av一区二区三区四区 | 国产精品无码mv在线观看 | 亚洲色欲久久久综合网东京热 | 亚洲色在线无码国产精品不卡 | 国产av久久久久精东av | 亚洲中文字幕无码一久久区 | 国产热a欧美热a在线视频 | 成人性做爰aaa片免费看 | 国产成人无码av片在线观看不卡 | 水蜜桃色314在线观看 | 国产熟妇另类久久久久 | 国产又爽又猛又粗的视频a片 | 精品厕所偷拍各类美女tp嘘嘘 | 日本在线高清不卡免费播放 | 日本肉体xxxx裸交 | 中文字幕av无码一区二区三区电影 | 熟妇女人妻丰满少妇中文字幕 | 欧美成人午夜精品久久久 | 好爽又高潮了毛片免费下载 | 亚洲の无码国产の无码步美 | 日本熟妇人妻xxxxx人hd | 蜜臀aⅴ国产精品久久久国产老师 | 精品久久8x国产免费观看 | 狠狠色噜噜狠狠狠7777奇米 | 丝袜美腿亚洲一区二区 | 欧美日本精品一区二区三区 | 亚洲一区av无码专区在线观看 | 久久综合香蕉国产蜜臀av | 国产一区二区三区影院 | 中文字幕无码免费久久9一区9 | 精品无码一区二区三区的天堂 | 国产色视频一区二区三区 | 无码人妻黑人中文字幕 | 午夜嘿嘿嘿影院 | 又大又硬又黄的免费视频 | 国产精品va在线观看无码 | 精品无人国产偷自产在线 | 1000部啪啪未满十八勿入下载 | 国产精品久久久久久亚洲影视内衣 | 四虎国产精品免费久久 | 国产亚洲人成a在线v网站 | 国产肉丝袜在线观看 | 无码国产乱人伦偷精品视频 | 欧美freesex黑人又粗又大 | 国产免费久久精品国产传媒 | 久久精品女人天堂av免费观看 | 久久国产精品偷任你爽任你 | 国产精品亚洲专区无码不卡 | 水蜜桃av无码 | 免费国产黄网站在线观看 | 一个人看的www免费视频在线观看 | 国产艳妇av在线观看果冻传媒 | 又大又紧又粉嫩18p少妇 | 国产真实夫妇视频 | 中文无码精品a∨在线观看不卡 | 国产精品久久久av久久久 | 亚洲国产午夜精品理论片 | 成人免费视频视频在线观看 免费 | 国产成人无码区免费内射一片色欲 | 真人与拘做受免费视频 | 欧洲vodafone精品性 | 高清无码午夜福利视频 | 欧美一区二区三区 | a在线观看免费网站大全 | 永久免费观看国产裸体美女 | 377p欧洲日本亚洲大胆 | 波多野结衣av在线观看 | 亚洲色无码一区二区三区 | 亚洲の无码国产の无码影院 | 精品亚洲成av人在线观看 | 国产三级久久久精品麻豆三级 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 伊人久久大香线蕉午夜 | 亚洲综合精品香蕉久久网 | 高潮毛片无遮挡高清免费视频 | 伊人久久大香线蕉亚洲 | 久久精品视频在线看15 | 三上悠亚人妻中文字幕在线 | 久久久久亚洲精品中文字幕 | 欧美野外疯狂做受xxxx高潮 | 欧美xxxx黑人又粗又长 | aa片在线观看视频在线播放 | 久久伊人色av天堂九九小黄鸭 | 久久久www成人免费毛片 | 丰满少妇弄高潮了www | 日本一区二区三区免费播放 | 无码国产乱人伦偷精品视频 | 六十路熟妇乱子伦 | 18禁黄网站男男禁片免费观看 | 国产美女精品一区二区三区 | 国产亚洲欧美在线专区 | 国产免费观看黄av片 | 全黄性性激高免费视频 | 国产亚洲精品久久久久久国模美 | 人妻少妇精品无码专区动漫 | 影音先锋中文字幕无码 | 久久亚洲精品成人无码 | 97久久国产亚洲精品超碰热 | 无码精品国产va在线观看dvd | 久久视频在线观看精品 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲精品午夜国产va久久成人 | 无码人妻av免费一区二区三区 | 激情内射亚州一区二区三区爱妻 | 精品国产av色一区二区深夜久久 | 亚洲中文字幕成人无码 | 久久午夜夜伦鲁鲁片无码免费 | 久久精品一区二区三区四区 | 欧美人与动性行为视频 | 亚洲啪av永久无码精品放毛片 | 国产成人精品久久亚洲高清不卡 | 一个人免费观看的www视频 | 97se亚洲精品一区 | 欧美国产日韩久久mv | 久久99精品久久久久久 | 国产农村乱对白刺激视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产成人无码av片在线观看不卡 | 国产成人无码区免费内射一片色欲 | 成人欧美一区二区三区黑人免费 | 精品乱子伦一区二区三区 | 亚洲色在线无码国产精品不卡 | 女高中生第一次破苞av | 国产精品无码久久av | 久久久久久久久888 | 久久综合色之久久综合 | 领导边摸边吃奶边做爽在线观看 | 九九久久精品国产免费看小说 | 亚洲国产精华液网站w | 国产在线精品一区二区高清不卡 | 澳门永久av免费网站 | 日本又色又爽又黄的a片18禁 | 国产高潮视频在线观看 | 国产无av码在线观看 | 欧美激情一区二区三区成人 | 精品夜夜澡人妻无码av蜜桃 | 野外少妇愉情中文字幕 | 蜜桃无码一区二区三区 | 亚洲国产欧美在线成人 | 一本久道久久综合婷婷五月 | av无码电影一区二区三区 | 中文字幕av伊人av无码av | 激情内射亚州一区二区三区爱妻 | 精品国产一区av天美传媒 | 老子影院午夜伦不卡 | 国产成人无码一二三区视频 | 亚洲国精产品一二二线 | 国产精品99爱免费视频 | 在线a亚洲视频播放在线观看 | 久久精品国产99精品亚洲 | 日本一本二本三区免费 | 日本va欧美va欧美va精品 | 精品亚洲成av人在线观看 | 国色天香社区在线视频 | 日韩精品a片一区二区三区妖精 | 人妻天天爽夜夜爽一区二区 | 欧美人与动性行为视频 | 久久午夜夜伦鲁鲁片无码免费 | 麻豆蜜桃av蜜臀av色欲av | 久久精品女人天堂av免费观看 | 性色av无码免费一区二区三区 | 国产无套内射久久久国产 | 无人区乱码一区二区三区 | 久久久久成人片免费观看蜜芽 | 亚洲高清偷拍一区二区三区 | 国产人妻大战黑人第1集 | 国产在线aaa片一区二区99 | 国产另类ts人妖一区二区 | 日本又色又爽又黄的a片18禁 | 风流少妇按摩来高潮 | 无码av岛国片在线播放 | 久久综合激激的五月天 | 午夜精品一区二区三区的区别 | 国产性生交xxxxx无码 | 国产精品a成v人在线播放 | 日日橹狠狠爱欧美视频 | 给我免费的视频在线观看 | 亚洲毛片av日韩av无码 | 国产成人精品视频ⅴa片软件竹菊 | 99久久人妻精品免费一区 | 在线看片无码永久免费视频 | 亚洲欧美日韩国产精品一区二区 | 一区二区传媒有限公司 | 日日天日日夜日日摸 | 99久久精品日本一区二区免费 | 日本高清一区免费中文视频 | 日韩精品成人一区二区三区 | 日日碰狠狠丁香久燥 | 亚洲精品一区三区三区在线观看 | 中文字幕日产无线码一区 | 久久久久久a亚洲欧洲av冫 | 免费观看的无遮挡av | 青青青爽视频在线观看 | 狠狠躁日日躁夜夜躁2020 | 国产精品无码成人午夜电影 | 亚洲国产成人a精品不卡在线 | 成人精品一区二区三区中文字幕 | 激情综合激情五月俺也去 | 十八禁视频网站在线观看 | 欧美亚洲国产一区二区三区 | 久久亚洲精品成人无码 | 亚洲精品美女久久久久久久 | 亚洲精品一区二区三区在线观看 | 中文字幕乱码亚洲无线三区 | 国产精品久久久久9999小说 | 久久久久久久人妻无码中文字幕爆 | 色窝窝无码一区二区三区色欲 | 亚洲欧美日韩综合久久久 | 亚洲一区二区三区四区 | 国产亚洲精品久久久久久国模美 | 中文字幕日产无线码一区 | 亚洲中文字幕av在天堂 | 一个人看的www免费视频在线观看 | www一区二区www免费 | 娇妻被黑人粗大高潮白浆 | 牛和人交xxxx欧美 | 三级4级全黄60分钟 | 极品嫩模高潮叫床 | 在线视频网站www色 | 精品国偷自产在线视频 | 男女超爽视频免费播放 | 亚洲国产精品毛片av不卡在线 | 国产亚洲欧美日韩亚洲中文色 | 丝袜 中出 制服 人妻 美腿 | 成人毛片一区二区 | 亚洲自偷自偷在线制服 | 亚洲国产av精品一区二区蜜芽 | 图片区 小说区 区 亚洲五月 | 丰满诱人的人妻3 | 老熟女重囗味hdxx69 | 无码av中文字幕免费放 | 亚欧洲精品在线视频免费观看 | 岛国片人妻三上悠亚 | 377p欧洲日本亚洲大胆 | 精品久久久无码中文字幕 | 永久黄网站色视频免费直播 | 成人精品视频一区二区 | 内射爽无广熟女亚洲 | 国产乱子伦视频在线播放 | 日韩视频 中文字幕 视频一区 | 久久99精品久久久久久动态图 | 亚洲中文字幕成人无码 | 老司机亚洲精品影院 | 六十路熟妇乱子伦 | 国产成人午夜福利在线播放 | 婷婷丁香六月激情综合啪 | 色噜噜亚洲男人的天堂 | 久久国产精品精品国产色婷婷 | 国产av久久久久精东av | 麻豆精品国产精华精华液好用吗 | 中文字幕av无码一区二区三区电影 | 国产激情精品一区二区三区 | 性色欲情网站iwww九文堂 | 国产成人精品一区二区在线小狼 | 六十路熟妇乱子伦 | 亚洲码国产精品高潮在线 | 国产亚洲视频中文字幕97精品 | 亚洲精品一区二区三区四区五区 | 国产精品久久久久久无码 | 男人的天堂av网站 | 鲁大师影院在线观看 | 国产精品久久国产精品99 | 色五月五月丁香亚洲综合网 | 成人一区二区免费视频 | 日本乱人伦片中文三区 | 日本乱偷人妻中文字幕 | 国产亚洲日韩欧美另类第八页 | 亚洲国产午夜精品理论片 | 婷婷六月久久综合丁香 | 日本饥渴人妻欲求不满 | 乱码午夜-极国产极内射 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 中文字幕日韩精品一区二区三区 | 香港三级日本三级妇三级 | 伊人久久大香线焦av综合影院 | 成人免费视频在线观看 | 噜噜噜亚洲色成人网站 | 99久久精品无码一区二区毛片 | 国产超级va在线观看视频 | 永久黄网站色视频免费直播 | 国产精品美女久久久 | 欧美一区二区三区 | 亚洲欧美日韩国产精品一区二区 | 日欧一片内射va在线影院 | 少妇无码吹潮 | 色综合天天综合狠狠爱 | 亚洲午夜福利在线观看 | аⅴ资源天堂资源库在线 | 久久精品无码一区二区三区 | 国内精品人妻无码久久久影院 | 亚洲成a人一区二区三区 | 亚洲自偷精品视频自拍 | 日韩精品a片一区二区三区妖精 | 欧洲熟妇精品视频 | 国产人妻大战黑人第1集 | 成人精品视频一区二区 | 无码人妻少妇伦在线电影 | 一本久久a久久精品vr综合 | 精品乱码久久久久久久 | 中国女人内谢69xxxx | 中国女人内谢69xxxx | 一二三四社区在线中文视频 | 日韩人妻无码一区二区三区久久99 | 在线精品国产一区二区三区 | 久久婷婷五月综合色国产香蕉 | 色婷婷香蕉在线一区二区 | 国产亚洲视频中文字幕97精品 | 国产人妻精品一区二区三区 | 国产艳妇av在线观看果冻传媒 | 波多野42部无码喷潮在线 | 免费观看黄网站 | 日韩av无码中文无码电影 | 丰满人妻被黑人猛烈进入 | 国产97色在线 | 免 | 亚洲七七久久桃花影院 | 男人的天堂av网站 | 久9re热视频这里只有精品 | 天堂久久天堂av色综合 | 婷婷色婷婷开心五月四房播播 | 波多野结衣高清一区二区三区 | 奇米影视7777久久精品 | 亚洲精品成a人在线观看 | 97久久精品无码一区二区 | 日本一卡2卡3卡四卡精品网站 | 激情内射亚州一区二区三区爱妻 | 亚洲国产av精品一区二区蜜芽 | 精品久久8x国产免费观看 | 无套内谢的新婚少妇国语播放 | 中文久久乱码一区二区 | 精品无码一区二区三区爱欲 | 亚洲国产午夜精品理论片 | 狠狠噜狠狠狠狠丁香五月 | 国产色精品久久人妻 | 牲交欧美兽交欧美 | 成人免费视频视频在线观看 免费 | 曰韩无码二三区中文字幕 | 双乳奶水饱满少妇呻吟 | 波多野结衣av一区二区全免费观看 | 人妻体内射精一区二区三四 | 国产精品久久久久7777 | 国产精品香蕉在线观看 | 国产三级精品三级男人的天堂 | 国内少妇偷人精品视频免费 | 在线а√天堂中文官网 | 免费无码一区二区三区蜜桃大 | 国产人妻精品一区二区三区 | 免费人成网站视频在线观看 | 午夜肉伦伦影院 | 色狠狠av一区二区三区 | 国产99久久精品一区二区 | 性欧美熟妇videofreesex | 精品国偷自产在线 | 国产亚洲精品久久久久久久久动漫 | 国产莉萝无码av在线播放 | 日本大香伊一区二区三区 | 免费人成在线视频无码 | 久久天天躁夜夜躁狠狠 | 亚洲中文字幕无码中字 | 乱人伦人妻中文字幕无码 | 东京热男人av天堂 | 亚洲无人区午夜福利码高清完整版 | 欧美乱妇无乱码大黄a片 | 国产精品久久久一区二区三区 | 中文字幕无线码 | 老太婆性杂交欧美肥老太 | 亚洲人成影院在线无码按摩店 | a国产一区二区免费入口 | 欧美丰满少妇xxxx性 | 又紧又大又爽精品一区二区 | 国产乡下妇女做爰 | 久激情内射婷内射蜜桃人妖 | 国产精品久久国产三级国 | 99re在线播放 | 免费看少妇作爱视频 | 国产成人精品优优av | 久久99精品国产.久久久久 | 中文毛片无遮挡高清免费 | 国产人妻精品一区二区三区不卡 | 亚洲人成影院在线观看 | 久久精品人人做人人综合试看 | 国产真人无遮挡作爱免费视频 | 国产农村妇女高潮大叫 | 日本乱偷人妻中文字幕 | 亚洲人交乣女bbw | 亚洲人交乣女bbw | 蜜桃视频韩日免费播放 | 久久久无码中文字幕久... | 国产亚洲人成a在线v网站 | 大地资源网第二页免费观看 | 精品国产麻豆免费人成网站 | 亚洲人交乣女bbw | 大肉大捧一进一出视频出来呀 | 精品日本一区二区三区在线观看 | 永久免费精品精品永久-夜色 | 中文字幕色婷婷在线视频 | 免费观看激色视频网站 | 亚洲精品中文字幕久久久久 | 亚洲春色在线视频 | 激情人妻另类人妻伦 | 波多野结衣一区二区三区av免费 | 中文字幕无码免费久久9一区9 | 国产精品无码mv在线观看 | 丝袜美腿亚洲一区二区 | 久久久国产一区二区三区 | 精品乱子伦一区二区三区 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 人人妻人人澡人人爽人人精品浪潮 | 日日摸天天摸爽爽狠狠97 | 无码毛片视频一区二区本码 | 蜜臀aⅴ国产精品久久久国产老师 | 日本精品人妻无码免费大全 | 日本一区二区三区免费播放 | 又粗又大又硬又长又爽 | 成人精品天堂一区二区三区 | 国产精品久久久av久久久 | 澳门永久av免费网站 | 国产内射爽爽大片视频社区在线 | 久久亚洲a片com人成 | 亚洲人成人无码网www国产 | 国产绳艺sm调教室论坛 | 国产va免费精品观看 | 人人妻人人藻人人爽欧美一区 | 欧美日韩一区二区三区自拍 | 少妇无套内谢久久久久 | 久久精品中文闷骚内射 | 人人爽人人澡人人高潮 | 亚洲成a人片在线观看无码3d | 少女韩国电视剧在线观看完整 | 日本乱人伦片中文三区 | 国产欧美精品一区二区三区 | 色老头在线一区二区三区 | 老太婆性杂交欧美肥老太 | 国产在线无码精品电影网 | 国语精品一区二区三区 | 动漫av一区二区在线观看 | 波多野结衣aⅴ在线 | 欧美阿v高清资源不卡在线播放 | 欧美一区二区三区 | 人妻夜夜爽天天爽三区 | 亚洲 欧美 激情 小说 另类 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 免费人成网站视频在线观看 | 妺妺窝人体色www在线小说 | 中文字幕日韩精品一区二区三区 | 国产精品久久国产三级国 | 国产美女极度色诱视频www | 18禁黄网站男男禁片免费观看 | 波多野结衣av一区二区全免费观看 | 亚洲最大成人网站 | 日韩人妻无码一区二区三区久久99 | 精品无码成人片一区二区98 | 亚洲啪av永久无码精品放毛片 | 波多野42部无码喷潮在线 | 少妇无码av无码专区在线观看 | 18禁止看的免费污网站 | 免费无码的av片在线观看 | 亚洲日本一区二区三区在线 | 国内揄拍国内精品人妻 | 精品国产成人一区二区三区 | 日本熟妇大屁股人妻 | 中文毛片无遮挡高清免费 | 无遮挡国产高潮视频免费观看 | 无码国产乱人伦偷精品视频 | 欧美老妇与禽交 | 乌克兰少妇性做爰 | 最近中文2019字幕第二页 | 99视频精品全部免费免费观看 | 性啪啪chinese东北女人 | 少妇人妻偷人精品无码视频 | 精品亚洲成av人在线观看 | 乱人伦人妻中文字幕无码久久网 | 国产精品无码一区二区桃花视频 | 在线欧美精品一区二区三区 | 国产免费无码一区二区视频 | 日韩精品一区二区av在线 | 国精品人妻无码一区二区三区蜜柚 | 国产内射爽爽大片视频社区在线 | 国产午夜亚洲精品不卡 | 久久精品丝袜高跟鞋 | 日产精品高潮呻吟av久久 | 1000部夫妻午夜免费 | 欧美一区二区三区视频在线观看 | 老熟女乱子伦 | 色综合视频一区二区三区 | 三级4级全黄60分钟 | 中国女人内谢69xxxxxa片 | 婷婷六月久久综合丁香 | 国产熟女一区二区三区四区五区 | 国产成人一区二区三区在线观看 | 十八禁视频网站在线观看 | 国产精品久久久久无码av色戒 | 97夜夜澡人人爽人人喊中国片 | 久久无码中文字幕免费影院蜜桃 | 天海翼激烈高潮到腰振不止 | 久久久久久国产精品无码下载 | 在线成人www免费观看视频 | 久久人妻内射无码一区三区 | 性色欲网站人妻丰满中文久久不卡 | 亚洲狠狠色丁香婷婷综合 | 性色av无码免费一区二区三区 | 黑人粗大猛烈进出高潮视频 | 日本熟妇大屁股人妻 | 精品国产福利一区二区 | 成人aaa片一区国产精品 | 日日鲁鲁鲁夜夜爽爽狠狠 | 在教室伦流澡到高潮hnp视频 | 精品亚洲韩国一区二区三区 | 正在播放老肥熟妇露脸 | 亚洲最大成人网站 | 国产乡下妇女做爰 | 欧美国产亚洲日韩在线二区 | 天天综合网天天综合色 | 国产精品高潮呻吟av久久 | 久久久久久久人妻无码中文字幕爆 | 一本久久a久久精品vr综合 | 欧美性猛交xxxx富婆 | 无码av免费一区二区三区试看 | 国产精品人人爽人人做我的可爱 | 小sao货水好多真紧h无码视频 | 国产精品香蕉在线观看 | 波多野结衣aⅴ在线 | 国产在热线精品视频 | 精品久久8x国产免费观看 | 亚洲男人av天堂午夜在 | 亚洲精品中文字幕久久久久 | 亚洲国产欧美日韩精品一区二区三区 | 激情亚洲一区国产精品 | 丝袜美腿亚洲一区二区 | 国产三级精品三级男人的天堂 | 免费无码肉片在线观看 | 99在线 | 亚洲 | 波多野结衣乳巨码无在线观看 | 亚洲乱码国产乱码精品精 | 久久伊人色av天堂九九小黄鸭 | 午夜福利不卡在线视频 | 欧美猛少妇色xxxxx | 在线欧美精品一区二区三区 | 玩弄人妻少妇500系列视频 | 国产99久久精品一区二区 | 国产精品久免费的黄网站 | 少妇无套内谢久久久久 | 亚洲成a人片在线观看日本 | 特级做a爰片毛片免费69 | 熟妇激情内射com | 国产手机在线αⅴ片无码观看 | 欧美成人午夜精品久久久 | 亚洲gv猛男gv无码男同 | 天天做天天爱天天爽综合网 | 亚洲精品一区二区三区四区五区 | 国产极品美女高潮无套在线观看 | 亚洲精品中文字幕久久久久 | 久久久久99精品国产片 | 高中生自慰www网站 | 亚洲国产高清在线观看视频 | 国产无遮挡吃胸膜奶免费看 | 蜜桃视频韩日免费播放 | 亚洲第一无码av无码专区 | 狠狠色色综合网站 | 久久精品国产精品国产精品污 | 国产成人精品视频ⅴa片软件竹菊 | 男人和女人高潮免费网站 | 日本一区二区三区免费播放 | 性欧美牲交xxxxx视频 | 99精品国产综合久久久久五月天 | 成熟人妻av无码专区 | 国产精品久久久久久久影院 | 三上悠亚人妻中文字幕在线 | 中文无码精品a∨在线观看不卡 | 国产精品毛多多水多 | 欧美成人高清在线播放 | 国产精品人妻一区二区三区四 | 国内精品久久久久久中文字幕 | 国产精品美女久久久 | 东京一本一道一二三区 | 国产福利视频一区二区 | 欧美真人作爱免费视频 | 真人与拘做受免费视频 | 色婷婷综合中文久久一本 | 野狼第一精品社区 | 日韩少妇内射免费播放 | 最新版天堂资源中文官网 | 亚洲熟妇色xxxxx亚洲 | 精品夜夜澡人妻无码av蜜桃 | 精品少妇爆乳无码av无码专区 | 亚洲国产精品毛片av不卡在线 | 久久久精品人妻久久影视 | 国产精品国产三级国产专播 | 国产sm调教视频在线观看 | 激情爆乳一区二区三区 | 色狠狠av一区二区三区 | 精品久久久无码人妻字幂 | 亚洲综合伊人久久大杳蕉 | 亚洲第一网站男人都懂 | 国产亚洲精品久久久久久久 | a在线观看免费网站大全 | 免费人成在线视频无码 | 人人妻人人澡人人爽精品欧美 | 久久综合九色综合欧美狠狠 | 日本xxxx色视频在线观看免费 | 男人和女人高潮免费网站 | 天堂亚洲2017在线观看 | 国产又爽又黄又刺激的视频 | 又大又硬又爽免费视频 | 牛和人交xxxx欧美 | 成人精品天堂一区二区三区 | 18禁止看的免费污网站 | 高潮毛片无遮挡高清免费视频 | 精品人人妻人人澡人人爽人人 | 日日夜夜撸啊撸 | 乱码午夜-极国产极内射 | 欧美老熟妇乱xxxxx | 久久国产精品精品国产色婷婷 | 欧美人与善在线com | 成人精品天堂一区二区三区 | 特大黑人娇小亚洲女 | 亚洲欧美日韩国产精品一区二区 | 樱花草在线播放免费中文 | 欧美人与禽zoz0性伦交 | 国产婷婷色一区二区三区在线 | 国内精品久久毛片一区二区 | 国产综合色产在线精品 | 国产亚洲精品久久久闺蜜 | 少女韩国电视剧在线观看完整 | 日韩欧美群交p片內射中文 | 国产乱人伦偷精品视频 | 97色伦图片97综合影院 | 色综合久久88色综合天天 | 99久久亚洲精品无码毛片 | 亚洲の无码国产の无码步美 | 亚洲国产精品无码一区二区三区 | 欧美日韩一区二区免费视频 | 久久精品视频在线看15 | 一区二区传媒有限公司 | 久久99精品久久久久久 | 亚洲精品国偷拍自产在线麻豆 | 久久久久国色av免费观看性色 | 久久久中文字幕日本无吗 | 牛和人交xxxx欧美 | 亚洲中文字幕成人无码 | 伊人久久大香线蕉av一区二区 | 色婷婷综合中文久久一本 | 影音先锋中文字幕无码 | 中文字幕日产无线码一区 | 亚洲经典千人经典日产 | 精品欧美一区二区三区久久久 | 97精品国产97久久久久久免费 | 日本丰满熟妇videos | 强辱丰满人妻hd中文字幕 | 少妇人妻av毛片在线看 | 国产网红无码精品视频 | 中文字幕乱码人妻无码久久 | a国产一区二区免费入口 | 少妇高潮喷潮久久久影院 | 牲欲强的熟妇农村老妇女视频 | 国产人妻大战黑人第1集 | 在线观看欧美一区二区三区 | 天天摸天天碰天天添 | aa片在线观看视频在线播放 | 纯爱无遮挡h肉动漫在线播放 | 成人欧美一区二区三区黑人 | 伊在人天堂亚洲香蕉精品区 | 国产成人精品视频ⅴa片软件竹菊 | 男女爱爱好爽视频免费看 | 一个人免费观看的www视频 | 国产亚洲精品久久久久久久久动漫 | 婷婷丁香五月天综合东京热 | 国产成人无码av片在线观看不卡 | 国产成人无码专区 | 国产午夜亚洲精品不卡下载 | 未满小14洗澡无码视频网站 | 久久综合激激的五月天 | 日产精品高潮呻吟av久久 | 男女下面进入的视频免费午夜 | 丝袜美腿亚洲一区二区 | 午夜精品久久久久久久久 | 一本加勒比波多野结衣 | 老熟妇仑乱视频一区二区 | 国产熟妇高潮叫床视频播放 | 夜夜影院未满十八勿进 | 国产特级毛片aaaaaa高潮流水 | 夜夜高潮次次欢爽av女 | 亚洲欧美精品伊人久久 | 欧美freesex黑人又粗又大 | 国产又粗又硬又大爽黄老大爷视 | 国产午夜福利亚洲第一 | 伊人久久大香线焦av综合影院 | 一个人看的视频www在线 | 亚洲精品久久久久avwww潮水 | 欧美日韩人成综合在线播放 | 成人无码精品1区2区3区免费看 | 99久久婷婷国产综合精品青草免费 | 亚洲一区二区三区在线观看网站 | 国产人妖乱国产精品人妖 | 天堂а√在线地址中文在线 | 亚洲の无码国产の无码影院 | 黑森林福利视频导航 | 在线视频网站www色 | 妺妺窝人体色www婷婷 | 日本丰满护士爆乳xxxx | 欧美成人免费全部网站 | 国产又爽又猛又粗的视频a片 | av人摸人人人澡人人超碰下载 | 日韩欧美群交p片內射中文 | 亚洲人交乣女bbw | 国产小呦泬泬99精品 | 亚洲一区二区观看播放 | 日本又色又爽又黄的a片18禁 | 亚洲欧美国产精品专区久久 | 欧美国产亚洲日韩在线二区 | 一区二区传媒有限公司 | 东京热无码av男人的天堂 | 久久99国产综合精品 | 国产色xx群视频射精 | 学生妹亚洲一区二区 | 又粗又大又硬又长又爽 | 中文久久乱码一区二区 | 国产av一区二区三区最新精品 | 天天爽夜夜爽夜夜爽 | 黑人大群体交免费视频 | 国产成人综合在线女婷五月99播放 | 国产xxx69麻豆国语对白 | 亚洲中文字幕在线观看 | 午夜精品一区二区三区的区别 | 男人的天堂2018无码 | 亚洲欧美中文字幕5发布 | 正在播放东北夫妻内射 | 亚洲人成无码网www | 久久精品一区二区三区四区 | 天堂无码人妻精品一区二区三区 | 动漫av一区二区在线观看 | 亚洲成a人片在线观看无码 | 欧美精品一区二区精品久久 | 18禁止看的免费污网站 | 99国产欧美久久久精品 | 亚洲一区二区三区无码久久 | 国产偷自视频区视频 | 永久免费观看美女裸体的网站 | 扒开双腿疯狂进出爽爽爽视频 | 婷婷五月综合缴情在线视频 | 国产精品a成v人在线播放 | 亚洲精品国产品国语在线观看 | 久久视频在线观看精品 | 久久亚洲中文字幕精品一区 | 国产精品二区一区二区aⅴ污介绍 | 欧美性黑人极品hd | 装睡被陌生人摸出水好爽 | 性欧美videos高清精品 | 网友自拍区视频精品 | 亚洲人交乣女bbw | 亚洲一区二区三区国产精华液 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲国产精品无码久久久久高潮 | 欧美丰满熟妇xxxx | 亚洲经典千人经典日产 | 欧美丰满熟妇xxxx | 国产真实乱对白精彩久久 | 亚洲成av人片天堂网无码】 | 色欲综合久久中文字幕网 | 国产亚洲日韩欧美另类第八页 | 亚洲中文字幕无码一久久区 | 亚洲精品国偷拍自产在线麻豆 | a片免费视频在线观看 | 精品久久8x国产免费观看 | av在线亚洲欧洲日产一区二区 | 免费国产黄网站在线观看 | 国产人妻人伦精品1国产丝袜 | 亚洲自偷自拍另类第1页 | 亚洲另类伦春色综合小说 | 欧美日韩人成综合在线播放 | 色综合久久久无码网中文 | 国产亚洲美女精品久久久2020 | 日本精品高清一区二区 | 欧美第一黄网免费网站 | 人妻天天爽夜夜爽一区二区 | 国产办公室秘书无码精品99 | 国产成人av免费观看 | 国产美女精品一区二区三区 | 欧美熟妇另类久久久久久不卡 | 暴力强奷在线播放无码 | 亚洲人成影院在线观看 | 永久免费观看国产裸体美女 | 爆乳一区二区三区无码 | 国产成人无码av片在线观看不卡 | 性生交片免费无码看人 | 激情爆乳一区二区三区 | 亚洲色无码一区二区三区 | 色五月丁香五月综合五月 | 国产人妻人伦精品1国产丝袜 | 国产亚洲精品久久久久久 | 精品国精品国产自在久国产87 | 亚洲精品久久久久avwww潮水 | 亚洲精品国产第一综合99久久 | 日本xxxx色视频在线观看免费 | 久久久国产一区二区三区 | 四十如虎的丰满熟妇啪啪 | 中文久久乱码一区二区 | 国内精品九九久久久精品 | 日本高清一区免费中文视频 | 亚洲国产精品毛片av不卡在线 | 欧洲精品码一区二区三区免费看 | 久久亚洲精品成人无码 | 国产精品毛多多水多 | 国产人成高清在线视频99最全资源 | 国产97人人超碰caoprom | 成人免费无码大片a毛片 | 国产成人精品优优av | 国产在线精品一区二区三区直播 | 国产精品多人p群无码 | 无码人妻av免费一区二区三区 | 久久精品人人做人人综合试看 | 装睡被陌生人摸出水好爽 | 2019午夜福利不卡片在线 | 国内少妇偷人精品视频免费 | 熟女少妇人妻中文字幕 | 亚洲欧洲无卡二区视頻 | 亚洲a无码综合a国产av中文 | 国产精品嫩草久久久久 | 亚洲 a v无 码免 费 成 人 a v | 亚洲精品综合五月久久小说 | 精品国产一区二区三区四区 | 免费无码av一区二区 | 精品国产一区二区三区四区在线看 | 性欧美大战久久久久久久 | 老熟妇乱子伦牲交视频 | 午夜免费福利小电影 | 欧美日韩一区二区三区自拍 | 人妻少妇精品无码专区动漫 | 扒开双腿吃奶呻吟做受视频 | 成熟女人特级毛片www免费 | 久久久久久久女国产乱让韩 | 欧美国产亚洲日韩在线二区 | 欧美日韩人成综合在线播放 | 少妇无码av无码专区在线观看 | 亚洲天堂2017无码中文 | 久久精品中文字幕大胸 | 国产精品第一国产精品 | 妺妺窝人体色www婷婷 | 日本免费一区二区三区最新 | 亚洲爆乳精品无码一区二区三区 | 99久久久无码国产aaa精品 | 中文字幕无码免费久久9一区9 | 中文字幕乱码中文乱码51精品 | 久久综合九色综合欧美狠狠 | 国产亚洲精品久久久久久久 | 亚洲人成网站色7799 | 久久久久国色av免费观看性色 | 国产无遮挡又黄又爽免费视频 | 亚洲精品国产精品乱码视色 | 精品国产麻豆免费人成网站 | 国产真人无遮挡作爱免费视频 | 2020久久超碰国产精品最新 | 国产亚洲美女精品久久久2020 | 国语自产偷拍精品视频偷 | 无码成人精品区在线观看 | 中文字幕日韩精品一区二区三区 | 国产人妻精品一区二区三区不卡 | 九月婷婷人人澡人人添人人爽 | 日韩视频 中文字幕 视频一区 | 波多野结衣av一区二区全免费观看 | 丁香花在线影院观看在线播放 | 欧美日本免费一区二区三区 | 欧美性生交xxxxx久久久 | 中文字幕无码人妻少妇免费 | 中文无码精品a∨在线观看不卡 | 男女爱爱好爽视频免费看 | 国产精品毛多多水多 | 性啪啪chinese东北女人 | 扒开双腿吃奶呻吟做受视频 | 国产又爽又黄又刺激的视频 | 亚洲精品国偷拍自产在线麻豆 | 人人妻人人澡人人爽人人精品浪潮 | 少妇的肉体aa片免费 | 久久99国产综合精品 | 日本熟妇人妻xxxxx人hd | 中文字幕无线码免费人妻 | 超碰97人人做人人爱少妇 | 久久久精品欧美一区二区免费 | 国精品人妻无码一区二区三区蜜柚 | 欧美亚洲国产一区二区三区 | 亚洲精品www久久久 | 无码一区二区三区在线观看 | 日日鲁鲁鲁夜夜爽爽狠狠 | 久久 国产 尿 小便 嘘嘘 | 亚洲 日韩 欧美 成人 在线观看 | 午夜精品久久久内射近拍高清 | 亚洲欧洲中文日韩av乱码 | 国产无遮挡吃胸膜奶免费看 | 天下第一社区视频www日本 | 久久国产精品_国产精品 | 国产小呦泬泬99精品 | 激情综合激情五月俺也去 | 久在线观看福利视频 | 天天躁日日躁狠狠躁免费麻豆 | 国产一区二区三区影院 | 夜夜高潮次次欢爽av女 | 乱人伦人妻中文字幕无码久久网 | 好爽又高潮了毛片免费下载 | 无码人妻久久一区二区三区不卡 | 图片小说视频一区二区 | 十八禁视频网站在线观看 | 东京无码熟妇人妻av在线网址 | 青春草在线视频免费观看 | 人人爽人人澡人人人妻 | 精品无码国产一区二区三区av | 国内少妇偷人精品视频免费 | 夜先锋av资源网站 | 国产成人无码av在线影院 | 又粗又大又硬毛片免费看 | 亚洲の无码国产の无码影院 | 欧美成人免费全部网站 | 国产精品久久久午夜夜伦鲁鲁 | 清纯唯美经典一区二区 | 亚洲狠狠色丁香婷婷综合 | 亚洲综合在线一区二区三区 | 欧美人与牲动交xxxx | 熟妇人妻激情偷爽文 | 色噜噜亚洲男人的天堂 | 中文字幕乱码中文乱码51精品 | 国产一区二区三区精品视频 | 国产乡下妇女做爰 | 日本爽爽爽爽爽爽在线观看免 | 红桃av一区二区三区在线无码av | 少妇无码av无码专区在线观看 | 精品乱子伦一区二区三区 | 少妇久久久久久人妻无码 | 亚洲成av人在线观看网址 | 在线 国产 欧美 亚洲 天堂 | 国产成人综合美国十次 | 97夜夜澡人人双人人人喊 | 亚洲午夜久久久影院 | 国产在线aaa片一区二区99 | 宝宝好涨水快流出来免费视频 | 久久久久久国产精品无码下载 | 一二三四社区在线中文视频 | 妺妺窝人体色www婷婷 | 久久久久成人片免费观看蜜芽 | 澳门永久av免费网站 | 永久黄网站色视频免费直播 | 久久综合网欧美色妞网 | 亚洲国产欧美国产综合一区 | 亚洲日本va午夜在线电影 | 日日碰狠狠躁久久躁蜜桃 | 国产精品对白交换视频 | 亚洲中文字幕av在天堂 | 亚洲欧洲日本无在线码 | 国产办公室秘书无码精品99 | 欧美 丝袜 自拍 制服 另类 | 国产在线一区二区三区四区五区 | 国产真实伦对白全集 | 欧美日韩久久久精品a片 | 国内综合精品午夜久久资源 | 性史性农村dvd毛片 | 97精品人妻一区二区三区香蕉 | 国产午夜无码精品免费看 | 天天av天天av天天透 | 国产亚洲欧美日韩亚洲中文色 | 男女下面进入的视频免费午夜 | 久久99精品久久久久久动态图 | 亚洲人成网站免费播放 | 国产精品无码一区二区三区不卡 | 99riav国产精品视频 | 无码人妻精品一区二区三区不卡 | 成在人线av无码免观看麻豆 | 国产精品多人p群无码 | 撕开奶罩揉吮奶头视频 | 日本高清一区免费中文视频 | 国产偷国产偷精品高清尤物 | 国产精品久久久久无码av色戒 | 国产精品无码永久免费888 | 久久99热只有频精品8 | 亚洲 欧美 激情 小说 另类 | 在线视频网站www色 | 精品无码av一区二区三区 | 亚洲精品午夜无码电影网 | 欧美丰满少妇xxxx性 | 三级4级全黄60分钟 | 人人妻人人澡人人爽人人精品 | 丰满人妻翻云覆雨呻吟视频 | 日本乱偷人妻中文字幕 | 97精品人妻一区二区三区香蕉 | 亚洲精品国产品国语在线观看 | 牲欲强的熟妇农村老妇女视频 | 又大又黄又粗又爽的免费视频 | 无码人妻丰满熟妇区毛片18 | 中国女人内谢69xxxxxa片 | 麻豆国产丝袜白领秘书在线观看 | 色欲av亚洲一区无码少妇 | 欧美猛少妇色xxxxx | 俺去俺来也在线www色官网 | 亚洲国产精品毛片av不卡在线 | 亚洲狠狠婷婷综合久久 | 国产超碰人人爽人人做人人添 | 成人欧美一区二区三区黑人免费 | 午夜福利电影 | 老头边吃奶边弄进去呻吟 | 国产精品美女久久久久av爽李琼 | 熟女体下毛毛黑森林 | 大乳丰满人妻中文字幕日本 | 无码国产乱人伦偷精品视频 | 欧美成人免费全部网站 | 婷婷丁香六月激情综合啪 | 在线观看免费人成视频 | 天天做天天爱天天爽综合网 | 色婷婷综合激情综在线播放 | 国产乱码精品一品二品 | 精品亚洲成av人在线观看 | 在线天堂新版最新版在线8 | 欧美日韩视频无码一区二区三 | 国产一精品一av一免费 | 欧美日韩一区二区三区自拍 | 国产人妻大战黑人第1集 | 精品久久久久香蕉网 | 久久久久久亚洲精品a片成人 | 国产精品人人妻人人爽 | 午夜精品久久久内射近拍高清 | 久久这里只有精品视频9 | 久久精品99久久香蕉国产色戒 | 18禁止看的免费污网站 | 又大又硬又黄的免费视频 | 精品亚洲成av人在线观看 | a在线观看免费网站大全 | 欧美日韩色另类综合 | 国产人妻精品一区二区三区 | 少妇被黑人到高潮喷出白浆 | 精品成在人线av无码免费看 | 精品 日韩 国产 欧美 视频 | 亚拍精品一区二区三区探花 | 人人澡人人透人人爽 | 久久无码人妻影院 | 久久国产精品精品国产色婷婷 | 成在人线av无码免观看麻豆 | 午夜性刺激在线视频免费 | 在线看片无码永久免费视频 | 色 综合 欧美 亚洲 国产 | 免费无码一区二区三区蜜桃大 | 麻豆成人精品国产免费 | 国产 浪潮av性色四虎 | 亚洲国产精华液网站w | 久久99精品国产.久久久久 | 国产成人精品优优av | 久青草影院在线观看国产 | 中文字幕无码免费久久9一区9 | 十八禁视频网站在线观看 | 色 综合 欧美 亚洲 国产 | 人人妻人人澡人人爽欧美精品 | 99精品视频在线观看免费 | 99视频精品全部免费免费观看 | 大肉大捧一进一出好爽视频 | 欧洲熟妇色 欧美 | www国产亚洲精品久久久日本 | 人人澡人摸人人添 | 久久久婷婷五月亚洲97号色 | 中文字幕av日韩精品一区二区 | 图片小说视频一区二区 | 久久国产劲爆∧v内射 | 久久亚洲中文字幕无码 | 欧美猛少妇色xxxxx | 给我免费的视频在线观看 | 男女猛烈xx00免费视频试看 | 2019nv天堂香蕉在线观看 | 亚洲综合无码一区二区三区 | 丰满人妻被黑人猛烈进入 | 无码国模国产在线观看 | 玩弄中年熟妇正在播放 | 成人影院yy111111在线观看 | 天堂一区人妻无码 | 奇米影视888欧美在线观看 | 国内少妇偷人精品视频免费 | 熟女俱乐部五十路六十路av | 亚洲aⅴ无码成人网站国产app | 精品无人区无码乱码毛片国产 | 欧美成人家庭影院 | 亚洲 欧美 激情 小说 另类 | 一本久久伊人热热精品中文字幕 | 蜜桃视频韩日免费播放 | 色婷婷欧美在线播放内射 | 亚洲 高清 成人 动漫 | 欧美成人高清在线播放 | 熟女少妇在线视频播放 | 人妻尝试又大又粗久久 | 乌克兰少妇xxxx做受 | 牛和人交xxxx欧美 | 无码国模国产在线观看 | 欧美老妇与禽交 | 国产特级毛片aaaaaaa高清 | 日韩亚洲欧美中文高清在线 | 国产精品美女久久久 | 亚洲精品中文字幕 | 亚洲高清偷拍一区二区三区 | 欧美zoozzooz性欧美 | 欧美精品一区二区精品久久 | 精品人妻中文字幕有码在线 | 亚洲理论电影在线观看 | 97人妻精品一区二区三区 | 亚洲自偷自拍另类第1页 | 久久久久亚洲精品中文字幕 | 中文字幕人成乱码熟女app | 国产精品理论片在线观看 | 亚洲午夜福利在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 蜜桃臀无码内射一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 欧洲欧美人成视频在线 | 日本一区二区三区免费高清 | 女高中生第一次破苞av | 内射老妇bbwx0c0ck | 久在线观看福利视频 | 人妻中文无码久热丝袜 | 欧美肥老太牲交大战 | 国产成人亚洲综合无码 | 日本高清一区免费中文视频 | 少妇久久久久久人妻无码 | 欧美精品一区二区精品久久 | av人摸人人人澡人人超碰下载 | 在线播放亚洲第一字幕 | 国产精品第一国产精品 | 亚洲国产欧美日韩精品一区二区三区 | 国产精品怡红院永久免费 | 久久久成人毛片无码 | 国产真实伦对白全集 | 久久国产精品_国产精品 | 老太婆性杂交欧美肥老太 | 欧美日韩综合一区二区三区 | 日本大香伊一区二区三区 | 亚洲国产精品毛片av不卡在线 | 中文字幕无线码免费人妻 | 欧美成人免费全部网站 | 亚洲 高清 成人 动漫 | 中文字幕人妻无码一夲道 | 中文字幕av无码一区二区三区电影 | 欧美黑人性暴力猛交喷水 | 日日橹狠狠爱欧美视频 | 麻花豆传媒剧国产免费mv在线 | 免费无码av一区二区 | 久久亚洲日韩精品一区二区三区 | 四虎永久在线精品免费网址 | 国产精品无码mv在线观看 | 国产 精品 自在自线 | 久久久久久国产精品无码下载 | 999久久久国产精品消防器材 | 人人妻人人澡人人爽欧美一区九九 | 性生交大片免费看女人按摩摩 | 动漫av一区二区在线观看 | 丰满少妇女裸体bbw | 国产精品怡红院永久免费 | 欧美黑人性暴力猛交喷水 | 久久亚洲中文字幕精品一区 | 婷婷五月综合激情中文字幕 | 国产精品久久久一区二区三区 | 精品久久久无码人妻字幂 | 国产亚洲精品精品国产亚洲综合 | 亚洲欧洲日本无在线码 | 欧美性猛交内射兽交老熟妇 | 天堂在线观看www | 人妻尝试又大又粗久久 | 国产绳艺sm调教室论坛 | 中文毛片无遮挡高清免费 | 兔费看少妇性l交大片免费 | 国产真实乱对白精彩久久 | 高潮毛片无遮挡高清免费视频 | 成年女人永久免费看片 | 无码毛片视频一区二区本码 | 300部国产真实乱 | 无遮无挡爽爽免费视频 | 欧洲vodafone精品性 | 国产特级毛片aaaaaaa高清 | 国产人妻精品一区二区三区不卡 | 国产suv精品一区二区五 | 99精品久久毛片a片 | 亚洲国产日韩a在线播放 | 曰本女人与公拘交酡免费视频 | 97色伦图片97综合影院 | 婷婷色婷婷开心五月四房播播 | 男人和女人高潮免费网站 | 1000部夫妻午夜免费 | 亚洲 日韩 欧美 成人 在线观看 | 欧美 丝袜 自拍 制服 另类 | 又黄又爽又色的视频 | 55夜色66夜色国产精品视频 | 学生妹亚洲一区二区 | 国产国语老龄妇女a片 | 三上悠亚人妻中文字幕在线 | 日本大乳高潮视频在线观看 | 99在线 | 亚洲 | 精品人人妻人人澡人人爽人人 | 99国产精品白浆在线观看免费 | 亚洲精品一区二区三区在线 | 特黄特色大片免费播放器图片 | 国产口爆吞精在线视频 | 天海翼激烈高潮到腰振不止 | 亚洲国产精品久久久天堂 | 久久综合九色综合97网 | 一本久久伊人热热精品中文字幕 | 亚洲欧美日韩国产精品一区二区 | 成人性做爰aaa片免费看不忠 | 久久国产精品_国产精品 | 日本精品人妻无码77777 天堂一区人妻无码 | 一区二区传媒有限公司 | 男人的天堂av网站 | 久久99国产综合精品 | 久久综合九色综合欧美狠狠 | 精品厕所偷拍各类美女tp嘘嘘 | 97夜夜澡人人双人人人喊 | 天天躁夜夜躁狠狠是什么心态 | 亚洲成在人网站无码天堂 | 蜜桃无码一区二区三区 | 欧美 亚洲 国产 另类 | 岛国片人妻三上悠亚 | 亚洲gv猛男gv无码男同 | 国产精品内射视频免费 | 一二三四社区在线中文视频 | 日本一区二区更新不卡 | 麻豆国产人妻欲求不满 | 97se亚洲精品一区 | www国产精品内射老师 | 国产熟妇高潮叫床视频播放 | 荫蒂添的好舒服视频囗交 | 久久久亚洲欧洲日产国码αv | 小sao货水好多真紧h无码视频 | 成人aaa片一区国产精品 | 国产亚洲人成在线播放 | 无码毛片视频一区二区本码 | 香港三级日本三级妇三级 | 国产人妻精品午夜福利免费 | 牲欲强的熟妇农村老妇女视频 | 日日橹狠狠爱欧美视频 | 国产舌乚八伦偷品w中 | 亚洲男女内射在线播放 | 国产精品理论片在线观看 | 精品无码国产一区二区三区av | 亚洲а∨天堂久久精品2021 | 青青草原综合久久大伊人精品 | 久久精品女人的天堂av | 欧美激情一区二区三区成人 | 亚洲区欧美区综合区自拍区 | 国产精品久久久久久久9999 | 久久人人97超碰a片精品 | 一本色道久久综合狠狠躁 | 在线欧美精品一区二区三区 | 牛和人交xxxx欧美 | 亚洲男人av天堂午夜在 | 成年女人永久免费看片 | 粉嫩少妇内射浓精videos | 久久久久99精品成人片 | 久久无码人妻影院 | 国产激情综合五月久久 | 少妇被黑人到高潮喷出白浆 | 丁香啪啪综合成人亚洲 | 欧美日韩在线亚洲综合国产人 | 天天av天天av天天透 | 青草视频在线播放 | 伊人久久婷婷五月综合97色 | 亚洲精品一区二区三区在线观看 | 日本va欧美va欧美va精品 | 亚洲国产av美女网站 | 蜜臀av无码人妻精品 | 真人与拘做受免费视频 | 女人高潮内射99精品 | 亚洲狠狠婷婷综合久久 | 亚洲aⅴ无码成人网站国产app | 久久国产精品萌白酱免费 | 日韩人妻系列无码专区 | 国产精品永久免费视频 | 日日摸天天摸爽爽狠狠97 | 亚洲 高清 成人 动漫 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 小泽玛莉亚一区二区视频在线 | 免费看男女做好爽好硬视频 | 亚洲精品久久久久中文第一幕 | 55夜色66夜色国产精品视频 | 又大又黄又粗又爽的免费视频 | 巨爆乳无码视频在线观看 | 亚洲成av人在线观看网址 | 亚洲の无码国产の无码影院 | 国产精品久久国产三级国 | 久久久久久亚洲精品a片成人 | 国产综合色产在线精品 | 骚片av蜜桃精品一区 | 久久久中文字幕日本无吗 | 强伦人妻一区二区三区视频18 | 国产激情艳情在线看视频 | 亚洲中文字幕无码中文字在线 | 久久久久久久久蜜桃 | 日韩少妇内射免费播放 | 欧美黑人乱大交 | 亚洲高清偷拍一区二区三区 | 国产精品亚洲五月天高清 | 亚洲成a人一区二区三区 | 97精品人妻一区二区三区香蕉 | 成人精品视频一区二区 | 亚洲乱码中文字幕在线 | 精品一区二区三区无码免费视频 | 奇米影视888欧美在线观看 | 亚洲中文字幕无码一久久区 | 熟女体下毛毛黑森林 | 日本精品少妇一区二区三区 | 欧美三级不卡在线观看 | 波多野结衣av一区二区全免费观看 | 久久婷婷五月综合色国产香蕉 | 又大又硬又爽免费视频 | 日韩精品无码免费一区二区三区 | 亚洲另类伦春色综合小说 | 久久成人a毛片免费观看网站 | 国产色精品久久人妻 | 欧美日韩一区二区综合 | 国产午夜亚洲精品不卡下载 | 无码毛片视频一区二区本码 | 日产精品99久久久久久 | 免费中文字幕日韩欧美 | 欧美丰满熟妇xxxx性ppx人交 | 亚洲欧美日韩国产精品一区二区 | 久久综合香蕉国产蜜臀av | 午夜熟女插插xx免费视频 | 亚洲 另类 在线 欧美 制服 | 色噜噜亚洲男人的天堂 | 欧美精品国产综合久久 | 成 人 网 站国产免费观看 | 无码人妻丰满熟妇区毛片18 | 女人高潮内射99精品 | 日日天日日夜日日摸 | 大肉大捧一进一出好爽视频 | 蜜臀aⅴ国产精品久久久国产老师 | 成人三级无码视频在线观看 | 国产精品.xx视频.xxtv | 任你躁国产自任一区二区三区 | 亚洲国产精品无码一区二区三区 | 野外少妇愉情中文字幕 | 国产成人无码av一区二区 | 无码吃奶揉捏奶头高潮视频 | 国内丰满熟女出轨videos | 亚洲国产av精品一区二区蜜芽 | 男人的天堂av网站 | 亚洲a无码综合a国产av中文 | 一本久道久久综合狠狠爱 | 四十如虎的丰满熟妇啪啪 | 免费视频欧美无人区码 | 欧美人与物videos另类 | 亚洲日韩av一区二区三区四区 | 国产香蕉尹人视频在线 | 老子影院午夜精品无码 | 无遮无挡爽爽免费视频 | 国产欧美亚洲精品a | 精品国产青草久久久久福利 | 亚洲国产精品毛片av不卡在线 | 在线а√天堂中文官网 | 久久国产精品_国产精品 | 国产亚洲精品久久久久久久 | 欧美国产日韩亚洲中文 | 欧美性生交xxxxx久久久 | 亚洲大尺度无码无码专区 | 漂亮人妻洗澡被公强 日日躁 | 亚洲娇小与黑人巨大交 | 久久国语露脸国产精品电影 | 国产极品美女高潮无套在线观看 | 大屁股大乳丰满人妻 | 国产精品久久久久9999小说 | 狂野欧美性猛交免费视频 | 久久久久久国产精品无码下载 | 国产亚洲人成a在线v网站 | 一本大道久久东京热无码av | 丝袜 中出 制服 人妻 美腿 | 色综合久久久无码网中文 | 帮老师解开蕾丝奶罩吸乳网站 | 99久久99久久免费精品蜜桃 | 国产亚洲日韩欧美另类第八页 | 国产精品欧美成人 | 欧美 亚洲 国产 另类 | 97夜夜澡人人爽人人喊中国片 | 又大又硬又爽免费视频 | 久久久亚洲欧洲日产国码αv | av人摸人人人澡人人超碰下载 | 国产精品办公室沙发 | 又粗又大又硬毛片免费看 | 久久人人爽人人人人片 | 国产成人av免费观看 | 清纯唯美经典一区二区 | 亚洲国产精品无码久久久久高潮 | 日本高清一区免费中文视频 | 狠狠色丁香久久婷婷综合五月 | 国产一区二区不卡老阿姨 | 少妇一晚三次一区二区三区 | 国产精品免费大片 | 亚洲va欧美va天堂v国产综合 | 国产午夜福利100集发布 | 大地资源中文第3页 | 欧美xxxxx精品 | 蜜桃视频插满18在线观看 | 国产精品99爱免费视频 | 亚洲欧洲日本无在线码 | 牲交欧美兽交欧美 | 成人免费视频在线观看 | 国产sm调教视频在线观看 | 激情人妻另类人妻伦 | 日日天日日夜日日摸 | 在线播放无码字幕亚洲 | 一本久道高清无码视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产无套粉嫩白浆在线 | 中国女人内谢69xxxx | 国产av久久久久精东av | 亚洲日韩乱码中文无码蜜桃臀网站 | 人妻与老人中文字幕 | 精品无码国产一区二区三区av | 欧美丰满熟妇xxxx性ppx人交 | 精品一区二区三区无码免费视频 | 免费人成在线观看网站 |