使用Python PyQt5和New Qt Designer开发网盘界面

本视频将介绍如何是使用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_())

 Qt-UI C++Python界面开发工具 UI开发工具 qt解决方案 qt开源项目

更多详情请浏览

www.qt-ui.com

www.qt-ui.com.cn

猜你喜欢

转载自www.cnblogs.com/Qt-UI/p/13193673.html