PyQt自定义控件玩法¶
自定义控件,事件机制,如何让UI元素更丰富!
from PySide2 import QtWidgets
class QLineEditPath(QtWidgets.QLineEdit):
def __init__(self, parent=None):
super(QLineEditPath, self).__init__(parent)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls():
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls():
url = event.mimeData().urls()[0]
self.setText(url.toLocalFile())
dialog = QLineEditPath()
dialog.show()
from PySide2 import QtCore
from PySide2 import QtWidgets
class QLineEditPath(QtWidgets.QLineEdit):
def __init__(self, parent=None):
super(QLineEditPath, self).__init__(parent)
def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Return:
self.setText(self.text().replace("\\", "/"))
else:
QtWidgets.QLineEdit.keyPressEvent(self, event)
dialog = QLineEditPath()
dialog.show()
class QPublishedFileItem(QtWidgets.QWidget):
def __init__(self, file_name, file_type, parent=None):
super(QPublishedFileItem, self).__init__(parent)
vblFile = QtWidgets.QVBoxLayout()
lPublishedFileName = QtWidgets.QLabel(file_name)
lPublishedFileType = QtWidgets.QLabel(file_type)
# lPublishedFileName = QtWidgets.QLabel("<span style='font-weight: bold;'>lgt_autosphere_02.v007.nk</span> Version 007 (Task lgt_autosphere_02)")
# lPublishedFileType = QtWidgets.QLabel("<span style='font-size: 10px;'><span style='color: #2e93e2;'>Nuke Script</span> by xu tao at 2020-02-05 17:40</span>")
vblFile.addWidget(lPublishedFileName)
vblFile.addWidget(lPublishedFileType)
hblAction = QtWidgets.QHBoxLayout()
self.pbAction = QtWidgets.QPushButton("Action")
self.pbAction.hide()
self.mAction = QtWidgets.QMenu()
self.pbAction.setMenu(self.mAction)
hblAction.addLayout(vblFile)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
hblAction.addItem(spacerItem)
hblAction.addWidget(self.pbAction)
vblPublishedFile = QtWidgets.QVBoxLayout()
# vblPublishedFile.addLayout(vblThumbnail)
vblPublishedFile.addLayout(hblAction)
self.setLayout(vblPublishedFile)
fileName = "<span style='font-weight: bold;'>lgt_autosphere_02.v007.nk</span> Version 007 (Task lgt_autosphere_02)"
fileType = "<span style='font-size: 10px;'><span style='color: #2e93e2;'>Nuke Script</span> by xu tao at 2020-02-05 17:40</span>"
dialog = QPublishedFileItem(fileName, fileType)
dialog.show()