本视频将介绍如何是使用VSCode和PyQt5开发一个网盘界面
主要内容包括:
1、使用New Qt Designer编辑的界面文件和Python开发环境准备
2、使用VSCode编写网盘界面
3、调用UIGQtPython库来显示界面
4、绑定界面资源和事件处理
5、项目演示源码请点击Python源码资源下载
Python PyQt5网盘界面脚本代码
import sys from ctypes import * from PyQt5 import QtWidgets, QtCore, QtGui global _hoverBtn global _propertyAnimate global _btnMyDisk global _btnTransfer global _btnShare global _btnApp global _myDiskMain global _transferMain global _myDiskMenu global _transferMenu def centerWindow( win ): w = win.width() h = win.height() rect = QtWidgets.QApplication.desktop().screenGeometry(QtWidgets.QApplication.desktop().primaryScreen()) x = (rect.width() - w)/2 y = (rect.height() - h)/2 win.move(x,y) return def onSwithEventDisk(): _propertyAnimate.setStartValue(_hoverBtn.geometry().left()) _propertyAnimate.setEndValue(_btnMyDisk.geometry().left()-10) _propertyAnimate.start() _myDiskMenu.setVisible(True) _transferMenu.setVisible(False) _myDiskMain.setVisible(True) _transferMain.setVisible(False) return def onSwithEventTransfer(): _propertyAnimate.setStartValue(_hoverBtn.geometry().left()) _propertyAnimate.setEndValue(_btnTransfer.geometry().left()-10) _propertyAnimate.start() _myDiskMenu.setVisible(False) _transferMenu.setVisible(True) _myDiskMain.setVisible(False) _transferMain.setVisible(True) return def onSwithEventShare(): _propertyAnimate.setStartValue(_hoverBtn.geometry().left()) _propertyAnimate.setEndValue(_btnShare.geometry().left()-10) _propertyAnimate.start() _myDiskMenu.setVisible(False) _transferMenu.setVisible(True) _myDiskMain.setVisible(False) _transferMain.setVisible(True) return def onSwithEventApp(): _propertyAnimate.setStartValue(_hoverBtn.geometry().left()) _propertyAnimate.setEndValue(_btnApp.geometry().left()-10) _propertyAnimate.start() _myDiskMenu.setVisible(False) _transferMenu.setVisible(True) _myDiskMain.setVisible(False) _transferMain.setVisible(True) return def onPressCtrl(widget, index): return def onCloseEvent(): exit() return def valueChanged(value): rect = _hoverBtn.geometry() rect.setLeft(value) _hoverBtn.setGeometry(rect) return def initData(_myDiskTableView, mainWindow): _dataMyDataModel = QtGui.QStandardItemModel(mainWindow) _myDiskTableView.setModel(_dataMyDataModel) _dataMyDataModel.setHorizontalHeaderItem(0, QtGui.QStandardItem("file name")) _dataMyDataModel.setHorizontalHeaderItem(1, QtGui.QStandardItem("modify time")) _dataMyDataModel.setHorizontalHeaderItem(2, QtGui.QStandardItem("file size")) _myDiskTableView.setColumnWidth(0, 450) _myDiskTableView.setColumnWidth(1, 170) _myDiskTableView.setColumnWidth(2, 170) for i in range(0,20): for j in range(0,3): text = "item {} {}".format(i,j) itemData = QtGui.QStandardItem(text) _dataMyDataModel.setItem(i, j, itemData) return ll = windll.LoadLibrary lib = ll("./UIGQtPythonWrapper.dll") lib.initUIGears() lib.uigSetSkinFilePath.restype = c_bool ret = lib.uigSetSkinFilePath(b'./NetDisk/') if ret == 0: print("Load skin flode failed.") exit() app = QtWidgets.QApplication(sys.argv) mainWindowId = lib.uigCreatePageByFileName(b"Mainframe.json") allWins = app.topLevelWidgets() if len(allWins)==0: exit() mainWindow = allWins[0] closeBtn = mainWindow.findChild(QtWidgets.QPushButton, "btnClose") ret = lib.uigCreateSubPageByFileName(mainWindowId, b"leftMenu", b"MyDiskMenu.json") if ret == 0: print("Create left menu failed.") exit() ret = lib.uigCreateSubPageByFileName(mainWindowId, b"leftMenu", b"TansferMenu.json") if ret == 0: print("Create right content failed.") exit() ret = lib.uigCreateSubPageByFileName(mainWindowId, b"mainContainer", b"MyDisk.json") if ret == 0: print("Create right content failed.") exit() ret = lib.uigCreateSubPageByFileName(mainWindowId, b"mainContainer", b"Transfer.json") if ret == 0: print("Create left menu failed.") exit() _propertyAnimate = QtCore.QVariantAnimation(mainWindow) _propertyAnimate.setDuration(200) _propertyAnimate.valueChanged.connect(valueChanged) closeBtn.clicked.connect(onCloseEvent) _leftMenu = mainWindow.findChild(QtWidgets.QWidget, "leftMenu") _mainContainer = mainWindow.findChild(QtWidgets.QWidget, "mainContainer") _hoverBtn = mainWindow.findChild(QtWidgets.QWidget, "hoverBtn") _radRecent = mainWindow.findChild(QtWidgets.QRadioButton, "radRecent") _radRecent.setChecked(True) _radDownload = mainWindow.findChild(QtWidgets.QRadioButton, "radDownload") _radDownload.setChecked(True) _myDiskMenu = mainWindow.findChild(QtWidgets.QWidget, "MyDiskMenu") _transferMenu = mainWindow.findChild(QtWidgets.QWidget, "TansferMenu") _transferMenu.setVisible(False) _myDiskMenu.setVisible(True) _myDiskMain = mainWindow.findChild(QtWidgets.QWidget, "MyDiskMain") _transferMain = mainWindow.findChild(QtWidgets.QWidget, "TransferMain") _myDiskMain.setVisible(True) _transferMain.setVisible(False) _myDiskTableView = mainWindow.findChild(QtWidgets.QTableView,"myDiskData") _transferTableView = mainWindow.findChild(QtWidgets.QTableView,"tansferData") initData(_myDiskTableView, mainWindow) initData(_transferTableView, mainWindow) _btnMyDisk = mainWindow.findChild(QtWidgets.QPushButton,"btnMyDisk") _btnTransfer = mainWindow.findChild(QtWidgets.QPushButton,"btnTransfer") _btnShare = mainWindow.findChild(QtWidgets.QPushButton,"btnShare") _btnApp = mainWindow.findChild(QtWidgets.QPushButton,"btnApp") _hoverBtn = mainWindow.findChild(QtWidgets.QWidget, "hoverBtn") _btnMyDisk.clicked.connect(onSwithEventDisk) _btnTransfer.clicked.connect(onSwithEventTransfer) _btnShare.clicked.connect(onSwithEventShare) _btnApp.clicked.connect(onSwithEventApp) centerWindow(mainWindow) exit(app.exec_())
更多详情请浏览