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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

pyqt5 自定义控件_PyQt5学习笔记(十六)Pyinstaller打包与SQLite数据库

發(fā)布時(shí)間:2024/7/23 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyqt5 自定义控件_PyQt5学习笔记(十六)Pyinstaller打包与SQLite数据库 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

終于到了最后一章了QAQ,第一次寫(xiě)4萬(wàn)字以上的筆記分享,最近也在忙科創(chuàng)和CV的比賽,所以筆記會(huì)顯得比較粗糙。其實(shí)吧分享這個(gè)筆記很大一部分是為了讓自己記得更牢,網(wǎng)上翻閱自己的筆記也方便,如果有講解注釋不清楚的地方歡迎評(píng)論留言(秋梨膏)。當(dāng)然本蒟蒻也會(huì)時(shí)不時(shí)地在以后的時(shí)間更新完善這些已經(jīng)完成的筆記。

以下內(nèi)容涉及到SQLite數(shù)據(jù)庫(kù)和requests爬蟲(chóng)庫(kù)的使用,有時(shí)間我也會(huì)做相關(guān)方面的筆記噠(`?ω?′)。以下只是初步使用。


使用Pyinstaller打包PyQt5應(yīng)用

Pyinstaller部分同學(xué)想必用過(guò),這是一個(gè)在命令行下使用的、將腳本代碼轉(zhuǎn)成可執(zhí)行文件的python第三方庫(kù)。如果想要使得我們做出來(lái)的GUI脫離于python解釋器而讓操作系統(tǒng)直接執(zhí)行的話,我們可以使用Pyinstaller庫(kù)來(lái)封裝我們的GUI的腳本程序。這樣不同python、沒(méi)有python依賴庫(kù)的用戶也可以方便運(yùn)行程序。

這里直接講windows下可行的方法,安裝完pyinstaller后,打開(kāi)命令行,一路cd到需要打包的python文件的目錄下。或者也可以在需要打包的python文件的目錄下按住“Shift”+鼠標(biāo)右鍵,打開(kāi)“PowerShell“:

點(diǎn)開(kāi)后,就會(huì)有和windows的命令行幾乎一樣的頁(yè)面。

下面我們對(duì)draft.py文件打包生成可執(zhí)行文件,那么只要輸入以下指令:

pyinstaller -Fw "draft.py"

打開(kāi)目錄,你會(huì)發(fā)現(xiàn)多了兩個(gè)文件夾build和dist,打開(kāi)dist文件夾,里面就是可以直接運(yùn)行的可執(zhí)行文件了:

如果要修改圖標(biāo),比如要給文件“SevenDigitDrawV2.py“附上”curve.ico“的圖標(biāo),則輸入命令:

pyinstaller -i curve.ico -Fw "draft.py"

需要說(shuō)明的是,打包完的可執(zhí)行文件會(huì)很大(筆者的這個(gè)小小的畫(huà)板e(cuò)xe就有37MB),這是因?yàn)樗鼘⑺衟ython的依賴庫(kù)都包括進(jìn)去了,即你裝的第三方庫(kù)越多,打包出來(lái)的文件越大。


操作SQLite數(shù)據(jù)庫(kù)

許多桌面應(yīng)用都有訪問(wèn)本地?cái)?shù)據(jù)庫(kù)或者遠(yuǎn)程數(shù)據(jù)庫(kù)的需求,下面就講講其中的一種SQLite。SQLite是一種輕量級(jí)的跨平臺(tái)數(shù)據(jù)庫(kù),因此很常用。

PyQt5中提供了操控SQLite數(shù)據(jù)庫(kù)的API。

  • QSqlDatabase.addDatabase():創(chuàng)建一個(gè)通用數(shù)據(jù)庫(kù),參數(shù)填入“QSQLITE”表示創(chuàng)建SQLite數(shù)據(jù)庫(kù)

我們現(xiàn)在python文件的目錄下創(chuàng)建一個(gè)文件夾"db"。

import sys from PyQt5.QtSql import * ? def createDB():# 創(chuàng)建一個(gè)通用數(shù)據(jù)庫(kù)對(duì)象,參數(shù)"QSQLITE"代表通用數(shù)據(jù)庫(kù)為SQLite數(shù)據(jù)庫(kù)類(lèi)型db = QSqlDatabase.addDatabase("QSQLITE")# 指定SQLite數(shù)據(jù)庫(kù)的文件名db.setDatabaseName("./db/database.db")if not db.open():print("無(wú)法建立與數(shù)據(jù)庫(kù)的連接")return False# 創(chuàng)建查詢功能query = QSqlQuery()# 執(zhí)行創(chuàng)建表格的指令query.exec('create table people(id int primary key,name varchar(10),address varchar(50))')# 執(zhí)行往表格中插入數(shù)據(jù)的指令query.exec('insert into people values(1, "Kirigaya", "GitHub")')db.close()return True ? if __name__ == '__main__':createDB()

通過(guò)DB Browser for SQLite打開(kāi)"./db/database.db",點(diǎn)擊"Browser Data"瀏覽數(shù)據(jù):

我們創(chuàng)建的表格和數(shù)據(jù)條已經(jīng)在里面了

建議使用DB Browser for SQLite來(lái)打開(kāi)數(shù)據(jù)庫(kù)進(jìn)行操作,網(wǎng)上可以下載到。


通過(guò)可視化的方式對(duì)SQLite數(shù)據(jù)庫(kù)進(jìn)行增、刪、改、查操作

此處我們使用之前講過(guò)的QTableView控件來(lái)展示二維數(shù)據(jù)。之前你可能會(huì)覺(jué)得QTableView控件不常用,因?yàn)榕cQTableWidget相比,QTableView需要?jiǎng)?chuàng)建一個(gè)model,設(shè)置模型代表的表格的尺寸、屬性,再在模型上添加數(shù)據(jù),再將model與view關(guān)聯(lián),最后將view作為控件添加到窗口上才能顯示出我們model代表的表格的樣式與數(shù)據(jù),看起來(lái)比較繁瑣,沒(méi)有QTableWidget那樣直觀和方便。

但是當(dāng)我們想將數(shù)據(jù)庫(kù)中的數(shù)據(jù)在GUI上可視化時(shí),QTableView就變得很常用了,因?yàn)?/p>import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtSql import * from PyQt5.QtWidgets import * ? def initializeModel(model):# 設(shè)置表格名稱model.setTable("people")# 設(shè)置編輯策略model.setEditStrategy(QSqlTableModel.OnFieldChange)# 調(diào)用select方法model.select()# 設(shè)置表格頭model.setHeaderData(0, Qt.Horizontal, "ID")model.setHeaderData(1, Qt.Horizontal, "姓名")model.setHeaderData(2, Qt.Horizontal, "地址") ? def createView(title, model):view = QTableView()view.setModel(model)view.setWindowTitle(title)return view ? def findrow(i):delrow = i.row()print("選中第{}行".format(delrow)) ? def addrow():# 在model.rowCount()行后插入1行,并返回插入的行所在行數(shù)ret = model.insertRows(model.rowCount(), 1)print("添加第{}行".format(ret)) ? if __name__ == '__main__':app = QApplication(sys.argv)db = QSqlDatabase.addDatabase("QSQLITE")# 設(shè)置數(shù)據(jù)庫(kù)名字(路徑)db.setDatabaseName("./db/database.db") ?# 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)的表格模型,QSqlTableModel()會(huì)自動(dòng)關(guān)聯(lián)到db上model = QSqlTableModel()delrow = -1# 初始化這個(gè)表格模型(函數(shù)在上面)initializeModel(model) ?# 根據(jù)model創(chuàng)建QTableView對(duì)象view = createView("展示數(shù)據(jù)", model)view.clicked.connect(findrow) ?window = QDialog()layout = QVBoxLayout()layout.addWidget(view)addBtn = QPushButton("添加一行")addBtn.clicked.connect(addrow) ?delBtn = QPushButton("刪除一行")# 下面view.currentIndex().row()表示view中被選中的單元格對(duì)象所在行數(shù)delBtn.clicked.connect(lambda : model.removeRow(view.currentIndex().row())) ?layout.addWidget(addBtn)layout.addWidget(delBtn)window.setLayout(layout) ?window.setWindowTitle("Database Demo")window.resize(550, 400)window.show() ?sys.exit(app.exec_())

運(yùn)行效果:

因?yàn)閿?shù)據(jù)庫(kù)路徑設(shè)置的是我們之前創(chuàng)建的數(shù)據(jù)庫(kù),所以一打開(kāi)就已經(jīng)有數(shù)據(jù)了

分頁(yè)顯示數(shù)據(jù)

如果數(shù)據(jù)量很大,那么看起來(lái)會(huì)很不方便,一頁(yè)上只能顯示幾條數(shù)據(jù)。事實(shí)上,不僅是在GUI中,許多網(wǎng)頁(yè)也會(huì)有這種效果:

通過(guò)兩個(gè)按鈕控件“前一頁(yè)”和“后一頁(yè)”和一個(gè)QLineEdit控件可供任意頁(yè)面的跳轉(zhuǎn),用戶就可以在有限的UI中瀏覽整個(gè)數(shù)據(jù)庫(kù)中對(duì)的數(shù)據(jù)(emm,事實(shí)上,這不就是一般數(shù)據(jù)庫(kù)的基本功能嗎?)

下面,我們完成這個(gè)實(shí)例。

我們先將整個(gè)窗口的布局和控件設(shè)置一下:

import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtSql import * from PyQt5.QtWidgets import * ? class DataGrid(QWidget):def __init__(self):super().__init__()self.setWindowTitle("分頁(yè)查詢例子")self.resize(820, 420)self.initUI() ?def initUI(self):# 創(chuàng)建窗口(自定義方法)self.createWindow() ? ?# 添加窗口上的控件和布局def createWindow(self):# 添加相關(guān)的布局與控件hbox1 = QHBoxLayout()# 向前翻頁(yè)的按鈕self.prevButton = QPushButton("前一頁(yè)")# 向后翻頁(yè)的按鈕self.nextButton = QPushButton("后一頁(yè)")# 直接跳轉(zhuǎn)到指定頁(yè)數(shù)的按鈕和輸入想要跳轉(zhuǎn)至的頁(yè)數(shù)的輸入框self.switchPageButton = QPushButton("Go")self.switchPageLineEdit = QLineEdit()self.switchPageLineEdit.setFixedWidth(40) ?switchPage = QLabel("轉(zhuǎn)到第")page = QLabel("頁(yè)") ?# 添加我們的控件hbox1.addWidget(self.prevButton)hbox1.addWidget(self.nextButton)hbox1.addWidget(switchPage)hbox1.addWidget(self.switchPageLineEdit)hbox1.addWidget(page)hbox1.addWidget(self.switchPageButton)# 通過(guò)添加間隔控件使得上面的控件全部被擠到左邊去hbox1.addWidget(QSplitter()) ?# 下面這個(gè)布局置于最底端,當(dāng)做當(dāng)前頁(yè)面的狀態(tài)hbox2 = QHBoxLayout()# 創(chuàng)建顯示總也是的labelself.totalPageLabel = QLabel()self.totalPageLabel.setFixedWidth(70)# 創(chuàng)建顯示當(dāng)前頁(yè)數(shù)的labelself.currentPageLabel = QLabel()self.currentPageLabel.setFixedWidth(100)# 創(chuàng)建顯示總記錄數(shù)的labelself.totalRecordLabel = QLabel()self.totalRecordLabel.setFixedWidth(70) ?hbox2.addWidget(self.totalPageLabel)hbox2.addWidget(self.currentPageLabel)# 通過(guò)添加間隔控件使得上面的控件(totalPageLabel和currentPageLabel)在左邊,下面的控件(totalRecordLabel)在右邊hbox2.addWidget(QSplitter())hbox2.addWidget(self.totalRecordLabel) ?# 設(shè)置表格屬性self.tabelView = QTableView()# 表格寬度自適應(yīng)調(diào)整self.tabelView.resizeRowsToContents()self.tabelView.resizeColumnsToContents() ?# 創(chuàng)建主布局,并將hbox1,表格和hbox2裝入mainLayout = QVBoxLayout(self)mainLayout.addLayout(hbox1)mainLayout.addWidget(self.tabelView)mainLayout.addLayout(hbox2)self.setLayout(mainLayout)if __name__ == '__main__':app = QApplication(sys.argv)main = DataGrid()main.show()sys.exit(app.exec_())

運(yùn)行效果:

然后我們手動(dòng)創(chuàng)建26條數(shù)據(jù),并且設(shè)置查詢模型和QTableView控件,并將查詢模型和QTableView控件關(guān)聯(lián)起來(lái),就可以在中間空白區(qū)域顯示數(shù)據(jù)了。

完成了布局和控件之后,我們還需要為控件添加槽函數(shù),一通操作后,總體的代碼如下(有點(diǎn)雜,不好寫(xiě),所以我就將注釋全部打在上面了(`?ω?′))

import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtSql import * from PyQt5.QtWidgets import * ? class DataGrid(QWidget):def __init__(self):super().__init__()self.setWindowTitle("分頁(yè)查詢例子")self.resize(820, 420)# 手動(dòng)創(chuàng)建表格與數(shù)據(jù)(自定義方法)self.createTableAndInit() ?# 當(dāng)前頁(yè)self.currentPage = 0# 總頁(yè)數(shù)self.totalPage = 0# 總記錄數(shù)self.totalRecordCount = 0# 每頁(yè)顯示的記錄數(shù)self.PageRecordCount = 6 ?self.initUI() ?def initUI(self):# 創(chuàng)建窗口(自定義方法)self.createWindow()# 設(shè)置表格(自定義方法)self.setTableView() ? ?# 創(chuàng)建一個(gè)SQLite數(shù)據(jù)庫(kù)對(duì)象,并打開(kāi)指定路徑上的數(shù)據(jù)庫(kù)文件def createTableAndInit(self):self.db = QSqlDatabase.addDatabase("QSQLITE")self.db.setDatabaseName("./db/database.db")if not self.db.open():return False ?# 申明數(shù)據(jù)庫(kù)的查詢對(duì)象query = QSqlQuery()# 創(chuàng)建表query.exec("create table student(id int primary key, name vchar, sex vchar, age int, major vchar)")# 手動(dòng)添加記錄(嫌累也可以在數(shù)據(jù)庫(kù)查詢中添加)query.exec("insert into student values(1, 'AA', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(2, 'AB', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(3, 'AC', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(4, 'AD', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(5, 'AE', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(6, 'AF', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(7, 'AG', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(8, 'AH', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(9, 'AI', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(10, 'AJ', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(11, 'AK', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(12, 'AL', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(13, 'AM', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(14, 'AN', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(15, 'AO', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(16, 'AP', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(17, 'AQ', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(18, 'AR', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(19, 'AS', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(20, 'AT', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(21, 'AU', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(22, 'AV', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(23, 'AW', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(24, 'AX', '女', 20, '計(jì)算機(jī)')")query.exec("insert into student values(25, 'AY', '男', 20, '計(jì)算機(jī)')")query.exec("insert into student values(26, 'Az', '女', 20, '計(jì)算機(jī)')") ?return True ?# 添加窗口上的控件和布局def createWindow(self):# 添加相關(guān)的布局與控件hbox1 = QHBoxLayout()# 向前翻頁(yè)的按鈕self.prevButton = QPushButton("前一頁(yè)")# 向后翻頁(yè)的按鈕self.nextButton = QPushButton("后一頁(yè)")# 直接跳轉(zhuǎn)到指定頁(yè)數(shù)的按鈕和輸入想要跳轉(zhuǎn)至的頁(yè)數(shù)的輸入框self.switchPageButton = QPushButton("Go")self.switchPageLineEdit = QLineEdit()self.switchPageLineEdit.setFixedWidth(40) ?switchPage = QLabel("轉(zhuǎn)到第")page = QLabel("頁(yè)") ?# 綁定信號(hào)和槽self.prevButton.clicked.connect(self.onPrevButton)self.nextButton.clicked.connect(self.onNextButton)self.switchPageButton.clicked.connect(self.onSwitchPageButtonClick) ?# 添加我們的控件hbox1.addWidget(self.prevButton)hbox1.addWidget(self.nextButton)hbox1.addWidget(switchPage)hbox1.addWidget(self.switchPageLineEdit)hbox1.addWidget(page)hbox1.addWidget(self.switchPageButton)# 通過(guò)添加間隔控件使得上面的控件全部被擠到左邊去hbox1.addWidget(QSplitter()) ?# 下面這個(gè)布局置于最底端,當(dāng)做當(dāng)前頁(yè)面的狀態(tài)hbox2 = QHBoxLayout()# 創(chuàng)建顯示總也是的labelself.totalPageLabel = QLabel()self.totalPageLabel.setFixedWidth(70)# 創(chuàng)建顯示當(dāng)前頁(yè)數(shù)的labelself.currentPageLabel = QLabel()self.currentPageLabel.setFixedWidth(100)# 創(chuàng)建顯示總記錄數(shù)的labelself.totalRecordLabel = QLabel()self.totalRecordLabel.setFixedWidth(70) ?hbox2.addWidget(self.totalPageLabel)hbox2.addWidget(self.currentPageLabel)# 通過(guò)添加間隔控件使得上面的控件(totalPageLabel和currentPageLabel)在左邊,下面的控件(totalRecordLabel)在右邊hbox2.addWidget(QSplitter())hbox2.addWidget(self.totalRecordLabel) ?# 設(shè)置表格屬性self.tabelView = QTableView()# 表格寬度自適應(yīng)調(diào)整self.tabelView.resizeRowsToContents()self.tabelView.resizeColumnsToContents() ?# 創(chuàng)建主布局,并將hbox1,表格和hbox2裝入mainLayout = QVBoxLayout(self)mainLayout.addLayout(hbox1)mainLayout.addWidget(self.tabelView)mainLayout.addLayout(hbox2)self.setLayout(mainLayout) ?def setTableView(self):# 聲明查詢模型self.queryModel = QSqlQueryModel(self)# 設(shè)置當(dāng)前頁(yè)self.currentPage = 1# 獲取總記錄數(shù)self.totalRecordCount = self.getTotalRecordCount()# 獲取總頁(yè)數(shù)self.totalPage = self.getPageCount()# 刷新?tīng)顟B(tài)(也就是更新hbox2中各控件顯示的值)self.updateStatus()# 設(shè)置總頁(yè)數(shù)文本self.setTotalPageLabel()# 設(shè)置總記錄數(shù)self.setTotalRecordLabel() ?# 記錄查詢(0代表從第1條開(kāi)始查),從第一條往后查詢6條self.recordQuery(0)# 將數(shù)據(jù)庫(kù)中的model和tabelView關(guān)聯(lián)# 這樣數(shù)據(jù)庫(kù)中的數(shù)據(jù)就可以直接顯示在tableView代表的表格上了self.tabelView.setModel(self.queryModel) ?# 得到記錄數(shù)def getTotalRecordCount(self):# 設(shè)置查詢模型,獲得一個(gè)查詢所有數(shù)據(jù)的查詢模型self.queryModel.setQuery("select * from student")# 通過(guò)模型的rowCount()方法得到數(shù)據(jù)條數(shù)rowCount = self.queryModel.rowCount()return rowCount ?# 得到頁(yè)數(shù)def getPageCount(self):# 實(shí)際得到的頁(yè)數(shù)應(yīng)該是:總的記錄數(shù) / 每頁(yè)能夠容納下的記錄條數(shù),再向上取整# 下面就是通過(guò)判斷來(lái)達(dá)到向上取整 ?if self.totalRecordCount % self.PageRecordCount == 0:return int(self.totalRecordCount / self.PageRecordCount)else:return int(self.totalRecordCount / self.PageRecordCount + 1) ? ?# 記錄查詢函數(shù)(顯示limitIndex到limitIndex+5的6條數(shù)據(jù))def recordQuery(self, limitIndex):# 查詢語(yǔ)句,從limitIndex開(kāi)始往后查詢6條szQuery = ("select * from student limit %d,%d" % (limitIndex, self.PageRecordCount))# 對(duì)查詢模型使用set方法來(lái)設(shè)置模型self.queryModel.setQuery(szQuery) ?# 刷新?tīng)顟B(tài)def updateStatus(self):szCurrentText = ("當(dāng)前第%d頁(yè)" % self.currentPage)# 這是更新顯示當(dāng)前頁(yè)數(shù)的labelself.currentPageLabel.setText(szCurrentText) ?# 設(shè)置按鈕是否可用# 如果當(dāng)前在第一頁(yè),那么“向前一頁(yè)”的按鈕不可用if self.currentPage == 1:self.prevButton.setEnabled(False)self.nextButton.setEnabled(True)# 如果當(dāng)前在最后一頁(yè),那么“向后一頁(yè)”的按鈕不可用elif self.currentPage == self.totalPage:self.prevButton.setEnabled(True)self.nextButton.setEnabled(False)# 如果當(dāng)前在既不在第一頁(yè),也不在最后一頁(yè),那么兩個(gè)按鈕都可用else:self.prevButton.setEnabled(True)self.nextButton.setEnabled(True) ?# 設(shè)置顯示總頁(yè)數(shù)def setTotalPageLabel(self):szTotalPageText = ("共%d頁(yè)" % self.totalPage)self.totalPageLabel.setText(szTotalPageText) ?# 設(shè)置顯示總記錄數(shù)def setTotalRecordLabel(self):szTotalRecordText = ("共%d條" % self.totalRecordCount)self.totalRecordLabel.setText(szTotalRecordText) ?# 跳轉(zhuǎn)到前一頁(yè)的按鈕按下的槽函數(shù)def onPrevButton(self):# 計(jì)算上一頁(yè)第一條數(shù)據(jù)的索引# 注意我們的當(dāng)前頁(yè)數(shù)是從1開(kāi)始的,而數(shù)據(jù)索引是從0開(kāi)始的limitIndex = (self.currentPage - 2) * self.PageRecordCount# 設(shè)置查詢模型(顯示上一頁(yè)的6條數(shù)據(jù))self.recordQuery(limitIndex)# 記錄當(dāng)前頁(yè)數(shù)的變量也需要變self.currentPage -= 1# 刷新?tīng)顟B(tài)self.updateStatus() ?# 跳轉(zhuǎn)到后一頁(yè)的按鈕按下的槽函數(shù)def onNextButton(self):# 如法炮制limitIndex = self.currentPage * self.PageRecordCountself.recordQuery(limitIndex)self.currentPage += 1self.updateStatus() ?# 轉(zhuǎn)到指定頁(yè)面的按鈕按下的槽函數(shù)def onSwitchPageButtonClick(self):# 得到輸入的字符串szText = self.switchPageLineEdit.text() ?# 得到頁(yè)數(shù)pageIndex = int(szText)# 判斷是否有指定頁(yè)數(shù)if pageIndex > self.totalPage or pageIndex < 1:QMessageBox.information(self, "提示", "沒(méi)有指定的頁(yè)面,請(qǐng)重新輸入")return ?# 得到查詢起始行號(hào)limitIndex = (pageIndex - 1) * self.PageRecordCount ?# 設(shè)置查詢模型self.recordQuery(limitIndex)# 設(shè)置當(dāng)前頁(yè)self.currentPage = pageIndex# 刷新?tīng)顟B(tài)self.update() ? ? if __name__ == '__main__':app = QApplication(sys.argv)main = DataGrid()main.show()sys.exit(app.exec_())

運(yùn)行效果:


實(shí)戰(zhàn)項(xiàng)目:天氣信息查詢

最后我們完成一個(gè)查詢北京、天津、上海三地的天氣查詢的小GUI。

基本思路是先通過(guò)PyQt5搭建基本的布局和控件,然后為了獲取三地的天氣信息,我們需要使用Python中的Requests庫(kù),這是一個(gè)超級(jí)輕量的python爬蟲(chóng)庫(kù),可以靜態(tài)爬取指定url的數(shù)據(jù)流(這不是重點(diǎn)啦),反正將爬取的數(shù)據(jù)setText()在我們的控件上就行了。至于怎么使用requests庫(kù)爬取,讀者可以搜索MOOC上北京理工大學(xué)的requests課程。

最后我們搭建主循環(huán),在其中設(shè)置窗口的QSS樣式。

from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * import requests import sys ? ? class QueryWeather(QWidget):# 構(gòu)造函數(shù)后面三個(gè)參數(shù)決定默認(rèn)的圖像生成的寬度,高度和清晰度(每英寸像素點(diǎn)數(shù))def __init__(self, parent=None):super(QueryWeather, self).__init__(parent)self.setWindowTitle("查詢城市天氣")# 設(shè)置固定的窗口大小self.setFixedSize(800, 600)# 設(shè)置透明度self.setWindowOpacity(0.98)# 城市編碼self.cityName2Code = {"北京":"101010100", "天津":"101030100", "上海":"101020100"} ?self.initUI() ?# 搭建窗口,你也可以根據(jù)自己的喜好搭建,這里只是參考def initUI(self):mainVbox = QVBoxLayout()vbox = QVBoxLayout()hbox1 = QHBoxLayout()hbox2 = QHBoxLayout()self.cityLabel = QLabel("城市")self.cityLabel.setAlignment(Qt.AlignCenter)self.cityLabel.setFixedSize(100, 50)self.cityComboBox = QComboBox()self.cityComboBox.setFixedSize(200, 35)self.cityComboBox.addItems(["北京","天津","上海"])self.weatherInfoText = QTextBrowser()self.weatherInfoText.setFixedSize(750, 300)self.weatherInfoText.setAlignment(Qt.AlignCenter)hbox1.addWidget(self.cityLabel)hbox1.addWidget(self.cityComboBox)hbox1.addWidget(QSplitter())hbox2.addWidget(self.weatherInfoText)vbox.addLayout(hbox1)vbox.addLayout(hbox2) ?buttonHBox = QHBoxLayout()self.queryButton = QPushButton("查詢")self.queryButton.setFixedSize(150, 40)self.queryButton.setProperty("name", "queryButton")self.clearButton = QPushButton("清空")self.clearButton.setFixedSize(150, 40)self.clearButton.setProperty("name", "clearButton")buttonHBox.addStretch(1)buttonHBox.addWidget(self.queryButton)buttonHBox.addStretch(1)buttonHBox.addWidget(self.clearButton)buttonHBox.addStretch(1) ?mainVbox.addLayout(vbox)mainVbox.addStretch(1)mainVbox.addLayout(buttonHBox) ?self.setLayout(mainVbox)self.queryButton.clicked.connect(self.queryWeather)self.clearButton.clicked.connect(self.clearWeather) ? ?def queryWeather(self):cityName = self.cityComboBox.currentText()# 獲取城市對(duì)應(yīng)我們要爬取的頁(yè)面中的編碼cityCode = self.cityName2Code[cityName] ?# 爬取頁(yè)面內(nèi)容,返回response對(duì)象(json數(shù)據(jù))rep = requests.get("http://www.weather.com.cn/data/sk/" + cityCode + ".html")# 設(shè)置response對(duì)象的編碼rep.encoding = "utf-8"print(rep.json()) ?# 獲取json數(shù)據(jù)中的鍵值對(duì),就是我們需要的信息msg1 = "城市: {}".format(rep.json()["weatherinfo"]["city"] + "n")msg2 = "風(fēng)向: {}".format(rep.json()["weatherinfo"]["WD"] + "n")msg3 = "溫度: {}".format(rep.json()["weatherinfo"]["temp"] + "n")msg4 = "風(fēng)力: {}".format(rep.json()["weatherinfo"]["WS"] + "n")msg5 = "濕度: {}".format(rep.json()["weatherinfo"]["SD"] + "n")result = msg1 + msg2 + msg3 + msg4 + msg5self.weatherInfoText.setText(result) ?def clearWeather(self):# 因?yàn)閟etText方法本來(lái)就是覆蓋寫(xiě),那我們將全文信息設(shè)置成一個(gè)空格就可以達(dá)到清空頁(yè)面信息的效果self.weatherInfoText.setText(" ") ? if __name__ == '__main__':app = QApplication(sys.argv)main = QueryWeather()# QSS樣式表字符串style = '''QLabel{font-size:30px;}QComboBox{font-size:30px;}QPushButton[name="queryButton"]{background-color:#938FD9;color:#2f4f4f;font-size:25px;}QPushButton[name="clearButton"]{background-color:#C0C0C0;font-size:25px;}QTextBrowser{font-size:40px;color:#00CED1;}'''main.setStyleSheet(style)main.show()sys.exit(app.exec_())

運(yùn)行效果:

總結(jié)

以上是生活随笔為你收集整理的pyqt5 自定义控件_PyQt5学习笔记(十六)Pyinstaller打包与SQLite数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

欧美一级久久久久 | 97人人视频 | www免费看片com| 中文字幕免费久久 | 亚洲天天综合 | 久久久久亚洲精品成人网小说 | 在线视频成人 | 午夜视频导航 | 精品视频在线观看 | 女人18片| 久久精视频 | www.亚洲精品视频 | av在线亚洲天堂 | 丁香视频在线观看 | 成人小视频在线观看免费 | 波多野结衣视频网址 | 69视频网站 | 国产精品久久久久久久久久妇女 | 成年人免费观看国产 | 91污在线观看 | 国产91免费在线 | 精品一区二区在线免费观看 | 久久香蕉影视 | 久久久婷 | 精品国产一区二区三区久久久蜜月 | 欧美日韩国产mv | 久久精美视频 | 国际精品网 | 欧美一二三区在线观看 | 91免费版在线 | 久热久草| 中文永久免费观看 | 免费看片日韩 | 国产美女视频网站 | www视频在线播放 | 91av在线电影 | 成人网页在线免费观看 | 欧美日韩另类在线观看 | 在线免费av电影 | 91中文视频 | 国产高清中文字幕 | 免费亚洲精品 | 国产精成人品免费观看 | 久久久久国产一区二区三区 | 久久免费激情视频 | 亚洲不卡123 | 一区二区三区四区不卡 | 97国产大学生情侣白嫩酒店 | 人人超在线公开视频 | 国产日本在线观看 | 亚洲精品免费播放 | 婷婷视频导航 | 国产亚洲视频中文字幕视频 | 日日爱影视 | www.com久久| 美女网站色免费 | 亚洲精品乱码久久久久久 | 国产xxxx| 成人在线观看资源 | 国产亚洲成人网 | 亚洲一区视频免费观看 | 亚洲在线视频网站 | 亚洲九九九在线观看 | 三级黄色在线观看 | 亚洲综合色婷婷 | 黄色国产成人 | 激情视频一区二区三区 | 国产黄色资源 | 在线中文字幕一区二区 | 高清国产午夜精品久久久久久 | 国产成人一区二区三区免费看 | 日本久久久精品视频 | 毛片无卡免费无播放器 | 国产精品久久久久久久久久新婚 | 欧美日韩视频网站 | 日韩激情第一页 | 午夜视频二区 | av免费看在线 | 五月婷丁香网 | 天天色天天射天天综合网 | 九九九热精品 | 国产精品入口66mio女同 | 国产精品久久麻豆 | 亚洲h在线播放在线观看h | 色婷婷播放 | 操少妇视频| 精品在线二区 | 黄色影院在线观看 | 夜色资源网 | av电影免费观看 | 一级片免费在线 | 欧美精品久久久久久久 | 亚洲闷骚少妇在线观看网站 | 欧美日韩免费观看一区二区三区 | 碰超在线观看 | 欧美激情xxxx | 视频一区二区免费 | 天天操天天爱天天爽 | 99综合影院在线 | 1024手机看片国产 | 99热这里精品 | 91免费在线看片 | 国产成人久久精品一区二区三区 | 高清国产在线一区 | 亚洲精品一区二区三区高潮 | 午夜视频免费播放 | 国产成人亚洲在线电影 | 日韩国产高清在线 | 亚洲综合在线五月 | 久久乐九色婷婷综合色狠狠182 | 国产色婷婷精品综合在线手机播放 | 国产视频 久久久 | 天天操夜夜做 | 中文字幕免费不卡视频 | 久草在线观看 | 婷婷丁香色 | japanese黑人亚洲人4k | 亚洲精品va| 婷婷色五 | 韩日av在线| 日韩av一区二区三区四区 | 国产高清视频在线观看 | 中文字幕 成人 | 在线免费观看视频a | 久久成人18免费网站 | 国产一区二区电影在线观看 | 亚洲九九影院 | 国产精品久久久久久久久久99 | 五月婷婷视频在线 | 欧美日本不卡高清 | 少妇搡bbbb搡bbb搡aa | 欧美精品久久久久久久久老牛影院 | 操处女逼| 国产一卡久久电影永久 | 91麻豆国产福利在线观看 | 4p变态网欧美系列 | 中文字幕高清在线 | 久久论理 | 婷婷丁香激情综合 | 免费麻豆视频 | 国产69精品久久久久99尤 | 中文字幕乱偷在线 | 国产一级精品视频 | 一区二区精品国产 | 99热这里只有精品在线观看 | 日韩二区三区在线 | 日本三级久久 | 麻豆成人网| 99精品视频精品精品视频 | 日韩在线高清 | 99精品国自产在线 | 黄色在线网站噜噜噜 | 99久久精品免费一区 | 成人黄色小视频 | 日韩欧美大片免费观看 | 婷婷六月激情 | 九色精品免费永久在线 | 中文字幕丝袜一区二区 | 欧美91片| 精品在线视频一区 | 久久精品一区二区三区四区 | 日韩a在线观看 | 免费国产在线视频 | 天天做天天干 | 探花视频免费观看高清视频 | 国产精品三级视频 | 久久精品视频网站 | 91成人精品视频 | 国内精品久久久久 | 亚洲欧美激情精品一区二区 | 500部大龄熟乱视频使用方法 | 91福利视频免费 | 美女黄视频免费看 | 奇米网444| 国产精品久久久久久久妇 | 国产色视频一区二区三区qq号 | 中文字幕中文字幕在线中文字幕三区 | 福利一区二区三区四区 | 日韩精品一区二区在线 | www免费看 | 婷婷四房综合激情五月 | 五月激情久久 | 国偷自产视频一区二区久 | 天天操狠狠干 | 免费成人在线网站 | 久久字幕精品一区 | 免费在线观看成人av | 在线观看精品视频 | 天天综合网在线观看 | 99久久网站| 欧美999| 97视频免费看| 很黄很污的视频网站 | 亚洲每日更新 | 青春草免费在线视频 | 色网站在线免费 | 日韩在线观看中文 | 国产精品欧美一区二区 | 久久99日韩 | 日韩在线观看一区二区三区 | 在线a人v观看视频 | 狠狠躁夜夜躁人人爽超碰91 | 亚洲精品毛片一级91精品 | 香蕉免费 | 久久久久久久网站 | 成人免费视频网址 | 天天操欧美 | 日韩一三区 | 色综合久久中文字幕综合网 | 欧美日韩xxx | 91麻豆免费版 | 亚洲三级黄色 | 麻豆久久| 欧美疯狂性受xxxxx另类 | 日韩乱码中文字幕 | 国产成人一区二区三区影院在线 | 91av蜜桃| 久久国产亚洲 | 精品久久久亚洲 | 欧美日本中文字幕 | 丁香资源影视免费观看 | 99视频 | a天堂最新版中文在线地址 久久99久久精品国产 | 亚洲另类久久 | 伊人黄| 免费看色的网站 | 97超碰在线资源 | 国产精品一区二区三区免费视频 | 成人免费在线观看入口 | 日韩精品中文字幕av | 欧美日韩一区二区久久 | 国产精品久久免费看 | 在线免费视频 你懂得 | 99国产一区二区三精品乱码 | 国色天香在线观看 | 日日干天天射 | 国产在线精品国自产拍影院 | 97超碰国产精品 | 在线观看黄a | 96久久久 | 最新影院 | 欧美日韩aa | 日日干干夜夜 | 日韩激情第一页 | 欧美最猛性xxxx | 欧美精选一区二区三区 | 美女视频黄频大全免费 | 精品三级av | 欧美影院久久 | 亚洲精品网站 | 中文字幕一区二区三区久久 | 人人天天夜夜 | 天天射天天射天天 | 成人av网站在线观看 | 中文综合在线 | 久久蜜臀一区二区三区av | 2023亚洲精品国偷拍自产在线 | 五月天中文字幕mv在线 | 日韩av中文字幕在线 | 久久九九视频 | 超薄丝袜一二三区 | 亚洲精品www久久久久久 | 欧美日韩国产亚洲乱码字幕 | 国产在线视频在线观看 | 在线观看黄网站 | 在线观看精品一区 | 91综合色 | 91麻豆精品国产91久久久久久久久 | 免费精品人在线二线三线 | 99久久影院 | 五月婷在线播放 | 五月天色婷婷丁香 | 午夜少妇av | 精品99免费视频 | 国产免费视频在线 | 亚洲在线不卡 | 91亚洲综合 | 日韩欧美一区二区在线播放 | 日韩免费网址 | 婷婷色 亚洲 | 蜜臀91丨九色丨蝌蚪老版 | 草久草久| 亚洲人成人天堂h久久 | 97超碰人人澡人人爱 | 在线观看黄色大片 | 蜜臀av在线一区二区三区 | 97操操操 | 日本中文字幕视频 | 色综合久久久久久久久五月 | 麻豆精品视频在线观看免费 | 99久久精品国产系列 | 69国产在线观看 | 日韩欧美一级二级 | 中文字幕 国产视频 | 激情综合网天天干 | 波多野结衣视频一区二区三区 | 国产无套视频 | 狠狠的操狠狠的干 | 国产一区二区三区高清播放 | 国产日韩精品在线观看 | 在线观看网站你懂的 | 深夜视频久久 | 中文av字幕在线观看 | 91在线免费视频观看 | 久久综合婷婷国产二区高清 | 久久观看免费视频 | 亚洲网站在线 | 欧美精品免费在线 | 国产精品久久久久三级 | 成人黄大片 | 国产97在线看 | 黄毛片在线观看 | 免费三级a | 视频国产一区二区三区 | 亚洲视频网站在线观看 | 亚洲成人免费在线观看 | 久久午夜精品影院一区 | 激情婷婷在线观看 | 欧美网址在线观看 | 亚洲精品视频在线观看免费视频 | 久久免费激情视频 | 久久精品一级片 | av官网在线| 麻豆国产精品一区二区三区 | 天天射射天天 | 免费的黄色的网站 | 免费涩涩网站 | 国产男女无遮挡猛进猛出在线观看 | 国产精品免费观看久久 | 天天操综合 | 久久久久久久久久久综合 | 国产一区av在线 | 国产亚洲片 | 男女激情片在线观看 | 激情婷婷网 | 91精品久久久久久综合乱菊 | 国产精品久久电影观看 | 免费成视频 | 在线视频观看91 | 久久精品欧美一区二区三区麻豆 | 黄网站色欧美视频 | 日韩精品一区二区三区在线播放 | 日韩精品一区二区三区不卡 | 久草在线这里只有精品 | 日日夜夜天天久久 | 国产 成人 久久 | 麻豆视频一区二区 | 欧美日韩一区二区三区不卡 | 日韩电影久久久 | 毛片无卡免费无播放器 | 日韩中文字幕免费视频 | 久久久久久久免费观看 | 日日精品 | 亚洲精品美女视频 | 亚洲国产人午在线一二区 | 日韩专区 在线 | 香蕉精品视频在线观看 | 91在线www| 日日添夜夜添 | 黄色小说免费观看 | 亚洲无吗天堂 | 九九热免费视频在线观看 | 91精品久久香蕉国产线看观看 | 男女视频91 | 亚洲成人资源网 | 日本二区三区在线 | 久久人人爽人人爽 | 97品白浆高清久久久久久 | 久久精品欧美一区二区三区麻豆 | 日日夜夜中文字幕 | 91在线观看高清 | 久久av影院 | 欧美精选一区二区三区 | 色视频网址 | 91豆花在线观看 | 久久成年人| 国产精品久久久久久妇 | 久久草 | 国产xxxx性hd极品 | 少妇搡bbbb搡bbb搡69 | 免费大片av | 国产午夜三级一二三区 | 人人揉人人揉人人揉人人揉97 | 亚洲国产69 | 黄色1级大片 | 91九色免费视频 | 97小视频 | 日韩高清不卡一区二区三区 | 天堂av在线7 | 久久久久亚洲精品国产 | 一级免费黄色 | 伊人中文字幕在线 | 国产亚洲人成网站在线观看 | 国产在线播放不卡 | 欧美性色黄大片在线观看 | 少妇bbw搡bbbb搡bbbb | 亚洲精品国产精品99久久 | 天天射天天搞 | 97在线观看免费观看高清 | 激情在线网| 亚洲精品国产区 | 亚洲精品一区二区三区四区高清 | 久久久久久久久久久久久久电影 | 人人澡人人爱 | 人人干人人草 | 国产视频一区精品 | 日韩免费看 | 日韩精品2区 | 超碰com| 中文字幕二区在线观看 | 久久九九免费 | 日韩天天干 | 国内免费久久久久久久久久久 | 欧美色噜噜 | 国产特级毛片 | 欧美性极品xxxx娇小 | 日韩av免费一区二区 | 免费看黄色毛片 | 天天操天天干天天爱 | 婷婷在线色 | 伊人va| 精品一区二区免费在线观看 | 国产色女 | 亚洲精品观看 | 国产一卡二卡四卡国 | 国产91对白在线 | 国产成人黄色网址 | 欧美污污视频 | 综合激情网 | 在线免费国产 | 日韩最新在线视频 | 国产精品网红直播 | 手机看片久久 | 九九九热视频 | 久久久久久久久艹 | 在线观看视频你懂 | 青青久视频 | 天天操天天干天天 | 超碰av在线播放 | 免费电影一区二区三区 | 亚洲精品综合一区二区 | 天天爱天天舔 | 欧美日韩亚洲在线 | 国产淫片免费看 | 在线观看视频国产一区 | 在线观看中文 | 福利视频网址 | 99在线看 | wwwww.国产| 久久久国产一区二区三区 | 五月婷婷电影网 | 五月精品 | 天天干天天操天天做 | 在线中文字幕观看 | 亚洲国产中文字幕在线视频综合 | 91免费日韩 | 日本精油按摩3 | 亚洲成人蜜桃 | 成人av网站在线 | 国产成人精品一区二区三区福利 | 在线之家免费在线观看电影 | 天天操天天爱天天爽 | 福利精品在线 | 激情久久影院 | 天天操天天艹 | 亚洲一级电影 | 久久精品国产亚洲 | 青青草视频精品 | 亚洲精品在线国产 | 久99久在线 | 99精品99| 免费欧美 | 亚洲黄色片在线 | 色综合综合 | 欧亚日韩精品一区二区在线 | 黄色资源在线观看 | 久久另类小说 | 色在线视频网 | 亚洲综合成人婷婷小说 | 精品国产一区二区三区蜜臀 | 成人免费一级 | 欧美一级视频在线观看 | 97超碰超碰久久福利超碰 | 欧美日韩不卡在线 | 国产高清视频 | 91免费观看视频网站 | 欧美日韩在线免费视频 | 密桃av在线| 九九久久久久久久久激情 | 国产精品日韩欧美 | www91在线 | 97视频入口免费观看 | 在线观看免费成人 | 狠狠狠色丁香婷婷综合久久五月 | 久久视讯 | 久久五月天色综合 | 免费看三级 | 狠狠色狠狠色合久久伊人 | 国产精品国产三级国产不产一地 | 日韩三级免费 | 在线国产99 | 国产成人精品av在线观 | 日本精品在线视频 | 亚洲热久久 | 国产黄色网 | 久草久 | 成年人在线看片 | 久久九九网站 | 四虎国产精品永久在线国在线 | 天天干天天操天天做 | 三上悠亚一区二区在线观看 | 久久dvd | 在线观看成人福利 | 国产精品不卡 | 伊人在线视频 | www.色综合.com | 五月天天天操 | 国产高清视频在线播放 | 久草在线视频在线 | 亚洲午夜精品一区二区三区电影院 | 日韩av一区二区三区 | 久久国产精品99久久久久久进口 | av免费看看| 欧美一区二区精美视频 | 久久精品一区二区三区中文字幕 | 亚洲毛片一区二区三区 | 久久精品一区八戒影视 | 国产精品 美女 | 婷婷婷国产在线视频 | 日韩综合在线观看 | 久草在线视频网 | 婷婷在线免费观看 | 丝袜网站在线观看 | 最新国产在线 | 亚洲激情在线播放 | 国产又粗又硬又爽视频 | 国产精品一区二区在线看 | 久久免费av| 国产视频中文字幕在线观看 | 久久精品成人 | 天堂v中文| 日日日日干 | 久久免费视频播放 | 91视频在线免费下载 | 欧美小视频在线 | 午夜精品久久久久久久99 | 69xxxx欧美 | 日韩高清在线观看 | 国产一区二区手机在线观看 | 欧美一进一出抽搐大尺度视频 | 国产精品九九热 | 日韩欧美aaa | 色姑娘综合 | 国产人成看黄久久久久久久久 | 高清日韩一区二区 | 日日夜夜天天干 | 久久久久观看 | 91网免费观看 | 国产精品亚洲片在线播放 | 日本aaa在线观看 | 亚洲午夜久久久综合37日本 | 最新av在线免费观看 | 最近久乱中文字幕 | 三级小视频在线观看 | 91人人人| 亚洲欧美婷婷六月色综合 | 日本精品一区二区 | 欧美乱码精品一区二区 | 国产精品网在线观看 | 九九久久影院 | 日韩精选在线观看 | 国产精品一区二区在线免费观看 | 日本中文字幕视频 | 美女网站在线播放 | 制服丝袜在线 | 欧美国产高清 | 不卡的一区二区三区 | 天天色天天操天天爽 | 亚洲国内精品在线 | 日韩在线免费视频 | 9ⅰ精品久久久久久久久中文字幕 | 在线 日韩 av | 久久免费视频一区 | 久久久久久久久久久免费 | 久久精品伊人 | 国产在线精品一区 | 黄色软件大全网站 | 狠狠网站 | 亚洲精品免费观看 | 国产中文a | 综合亚洲视频 | 国产一区国产二区在线观看 | 婷婷亚洲五月色综合 | 成人网在线免费视频 | 久久久婷| 天海翼一区二区三区免费 | 亚洲综合视频网 | 天天色成人| 天天操天天射天天爽 | 黄色免费网站下载 | 久久99久久99久久 | 99国产精品 | 欧美有色 | 精品久久久久久一区二区里番 | 日韩资源视频 | av品善网 | 国产中文字幕免费 | 久久久久久毛片精品免费不卡 | 在线观看黄色国产 | 欧美精品在线一区二区 | 99精品国产福利在线观看免费 | 欧美一区二区在线刺激视频 | 天天操天天干天天插 | 久久99精品久久久久久清纯直播 | 精品一区二区免费 | 国产午夜三级一区二区三 | 深爱激情亚洲 | 国产色中涩| 欧美一区二区三区在线看 | 国内精品久久久久影院男同志 | av在线电影免费观看 | 日av免费 | 精品国产aⅴ一区二区三区 在线直播av | 日韩av中文在线观看 | 9999激情 | 日韩一级电影网站 | 色婷婷色 | 午夜精品久久久久久久久久久久 | 91手机视频| 亚洲激情 在线 | 综合网久久 | 日韩大陆欧美高清视频区 | 成人小视频在线观看免费 | 免费黄色网止 | 国产精品亚| 丁香婷婷网 | 99热9| 五月天六月婷 | 免费h在线观看 | 中文字幕在线不卡国产视频 | 丁香5月婷婷 | 久草国产在线观看 | 麻豆视频免费入口 | 黄色1级毛片 | 免费看污的网站 | 国产理论片在线观看 | 午夜影院三级 | 国产精品久久久久影视 | 日日夜夜狠狠 | 欧美精品网站 | 精品成人久久 | av中文字幕网址 | 国产精品一区二区三区视频免费 | 久久高清国产视频 | 激情久久网 | 欧美成人理伦片 | 国产精品久久久久久一区二区三区 | 欧美精品一级视频 | www夜夜操com| 婷婷五月情 | 人人草天天草 | 操操操干干干 | 国产成人精品一区二区三区 | 国产成人精品一区二区三区网站观看 | 91av精品| 国产99在线播放 | 四虎在线影视 | 久久国产二区 | 日本黄色免费在线观看 | 在线观看国产亚洲 | 人人狠狠综合久久亚洲婷 | 超碰免费在线公开 | 99久久激情视频 | 久久成人高清视频 | av网站大全免费 | 国产精品久久影院 | 91亚洲精品国偷拍 | 国产在线p| 欧美黑人猛交 | 久久久久久久久黄色 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 夜夜狠狠 | 欧美激情精品久久久久久免费 | 激情亚洲综合在线 | 亚洲国产成人精品电影在线观看 | 99久久精品国产毛片 | 欧美成人手机版 | 国产又粗又长又硬免费视频 | 国产91大片 | 五月天婷婷在线播放 | 精品国产乱码久久久久久1区2匹 | 五月天六月色 | 99久久毛片 | 99久久99久国产黄毛片 | 91麻豆精品国产91久久久无需广告 | 免费亚洲黄色 | av免费在线播放 | 欧美在线视频不卡 | 亚洲另类人人澡 | 欧美日韩精品久久久 | 色综合天天狠天天透天天伊人 | 天天曰天天 | 久久精品久久久精品美女 | 欧洲精品码一区二区三区免费看 | 午夜国产在线观看 | 免费在线黄色av | 日韩欧美视频免费在线观看 | 亚洲.www | www激情网 | 国产欧美精品在线观看 | 久久精品一区二区三 | 九九免费观看全部免费视频 | 亚洲一级片免费观看 | 欧美作爱视频 | 久久久久久久免费观看 | 中文字幕一区在线观看视频 | 亚州成人av在线 | 欧亚日韩精品一区二区在线 | 国产九色视频在线观看 | 国产在线传媒 | 成人免费观看完整版电影 | 国内精品久久久久久久影视简单 | www.天天草| 久久人人精 | 国产视频一区二区三区在线 | 91九色视频在线 | 麻豆视频国产在线观看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 欧美综合在线视频 | 五月亚洲 | 日韩av福利在线 | 久久久国际精品 | 天天曰夜夜爽 | 黄色在线观看网站 | 在线观看日韩精品视频 | 日韩视频在线观看免费 | 欧美男同视频网站 | 特级xxxxx欧美 | 免费国产在线精品 | 久久免费公开视频 | 一区av在线播放 | av线上看 | 在线观看国产亚洲 | av丝袜美腿| 色视频在线看 | 国产中文字幕在线播放 | 国模一二三区 | 综合av在线 | 24小时日本在线www免费的 | 日日干干 | 亚洲在线黄色 | 亚洲 欧美日韩 国产 中文 | 日韩在线视频在线观看 | 日韩成人精品 | 亚洲高清91| 精品一区 在线 | 毛片随便看 | 免费情缘 | 91大神免费视频 | www.com.日本一级 | 亚洲一级久久 | 精品国偷自产国产一区 | 99久久久久久久久 | 国产在线美女 | 国产成人精品999在线观看 | 国产免费嫩草影院 | 国产精品午夜久久 | 亚洲免费在线看 | 国产精品入口麻豆www | 中文字幕免费一区二区 | 99久久久久| 麻豆视传媒官网免费观看 | 日本免费久久高清视频 | 国内精品国产三级国产aⅴ久 | 久久久久久美女 | 久久久久久久久艹 | 久久激情小说 | 在线中文字幕网站 | 久久网址 | 国产精品一区二区无线 | 中文字幕成人在线 | 在线a视频| 久久av福利| 粉嫩一二三区 | 成人超碰在线 | 亚洲国产中文在线观看 | 日本久久91 | 97国产大学生情侣酒店的特点 | 国产视频首页 | 免费黄色av电影 | 日韩美女黄色片 | 亚洲国产成人精品电影在线观看 | 久久人人爽爽人人爽人人片av | 亚洲综合欧美精品电影 | 人人网av| 欧美另类网站 | av电影中文| 国产一区播放 | 久久久久北条麻妃免费看 | 开心色停停 | 丁香一区二区 | 成人免费视频网址 | 久草在线视频网 | www.色就是色 | 狠狠色丁香婷婷综合最新地址 | 91网址在线观看 | 色婷婷在线播放 | 激情五月五月婷婷 | 欧美一级电影免费观看 | 国产精品黄网站在线观看 | 18久久久久久 | 天天爱天天草 | 免费看黄色小说的网站 | 9在线观看免费高清完整版在线观看明 | 伊人夜夜 | 久久久午夜精品理论片中文字幕 | 亚洲狠狠操 | 又污又黄网站 | 美女网站在线免费观看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 久久九精品 | 视频福利在线观看 | 婷婷色网址 | 亚洲一级性 | 国产高清福利在线 | 草久在线观看视频 | 激情网五月 | 国产高清黄 | 日韩中文字幕免费电影 | 国产精品一二三 | 国产在线精品区 | 免费www视频 | 国产91丝袜在线播放动漫 | 日韩黄色中文字幕 | 中文字幕在线中文 | 久久8精品 | av电影免费在线 | 波多野结衣在线观看一区二区三区 | 超碰.com | 一区在线观看 | 激情婷婷久久 | 97视频在线 | 亚洲精品成人免费 | 69亚洲视频 | 97在线视频免费观看 | 久久亚洲综合色 | 免费视频区 | 成人资源在线播放 | 国产亚洲va综合人人澡精品 | 欧美日韩国产色综合一二三四 | 在线看黄网站 | 国产一二三在线视频 | 96亚洲精品久久久蜜桃 | 日韩av中文字幕在线免费观看 | 亚洲激情在线观看 | 在线观看成人毛片 | 国产精品福利午夜在线观看 | 国产精品一区二区三区四区在线观看 | 久久久久久久影视 | 伊人色**天天综合婷婷 | 国产精品高潮呻吟久久av无 | 五月天欧美精品 | 成人av在线观| 国产精品国产亚洲精品看不卡 | 丁香五婷 | 成人黄色在线观看视频 | 久久免费a | 久久99国产精品视频 | 亚洲精品国产精品国自产 | 日本不卡一区二区 | 国产精品视频在线观看 | 国内精品久久久精品电影院 | www,黄视频 | 国产成人免费观看久久久 | 999久久久久久久久 69av视频在线观看 | 99中文在线 | av电影免费看 | 人人精久 | 精品产品国产在线不卡 | 天天插天天干 | 中文字幕在线一二 | av电影免费在线看 | 国产精品女人网站 | 午夜影视av | 中文字幕av影院 | 欧美综合在线视频 | 日韩av电影免费观看 | 999久久久久久久久久久 | 天堂av影院 | 免费日韩在线 | 高清av网| 免费观看黄| 亚洲mv大片欧洲mv大片免费 | 亚洲国产精彩中文乱码av | 国产91精品看黄网站 | 亚洲精品激情 | 玖玖视频在线 | 蜜桃视频日本 | 国产成人一区二区三区 | 日韩成人免费在线电影 | 亚洲视频第一页 | 亚洲欧美在线综合 | 天堂av在线免费 | 亚洲黄色一级电影 | av韩国在线 | 2022中文字幕在线观看 | 国产一区精品在线观看 | 国产在线精品区 | 久久久久久看片 | 婷婷 综合 色 | 久久精品网站免费观看 | 在线观看91精品国产网站 | 亚洲欧美综合 | 最新的av网站 | 在线免费观看不卡av | a级片久久久 | 99爱在线观看 | 伊人导航| 免费久久99精品国产 | 久久久国产一区二区三区四区小说 | 91手机电视 | 啪啪免费观看网站 | 成人中文字幕+乱码+中文字幕 | 91精品久久久久 | 亚洲一区二区三区四区在线视频 | 亚洲第一区精品 | 久久久精品影视 | 91视频这里只有精品 | 手机看片久久 | 国产黄色精品在线观看 | 日韩不卡高清视频 | 国产精品电影在线 | 亚洲综合在线五月天 | 不卡电影一区二区三区 | 2019精品手机国产品在线 | 久久久久久久久免费视频 | 国内精品久久久精品电影院 | 99在线视频精品 | 在线看91| 免费看的黄色的网站 | 国产午夜在线观看 | 日本韩国中文字幕 | 精品国产一区二区久久 | 最近中文字幕免费视频 | 91网在线观看 | 十八岁免进欧美 | 国产一级特黄毛片在线毛片 | 在线国产视频观看 | 992tv在线观看 | 亚洲国产成人在线 | 色视频网站在线 | 国产老妇av| 狠狠色丁香婷综合久久 | 成年人黄色免费网站 | 天天色天天操天天爽 | 天堂在线一区二区 | 91精品在线免费观看视频 | 最近高清中文在线字幕在线观看 | 一级久久久 | 天天操夜夜想 | 日本aaaa级毛片在线看 | 欧美一级视频免费 | 久久亚洲美女 | 99色免费视频 | 天天操天天玩 | 伊人影院在线观看 | 在线国产能看的 | 久久久久国产免费免费 | 91综合久久一区二区 | 996久久国产精品线观看 | 在线观看视频中文字幕 | 狠狠的干狠狠的操 | www.99在线观看 | 久久精品一区二区 | www.av免费观看 | 91视频这里只有精品 | 免费亚洲黄色 | 久久免费视频国产 | 免费情趣视频 | 国产在线不卡精品 | 91在线视频观看 | 探花视频在线观看免费版 | 国产精品毛片一区二区 | 国产精品久久久久久久久久久久冷 | 免费视频成人 | 亚欧日韩av | 岛国av在线不卡 | 日韩性色| 麻花豆传媒mv在线观看网站 | 日本成人中文字幕在线观看 | 激情黄色av| 91夫妻视频| 国产精品视频最多的网站 | 五月激情站 | 国产精品国产三级在线专区 | 麻豆免费视频网站 | 日韩有色 | 国产中文字幕一区二区 |