Initial commit
This commit is contained in:
parent
f6c8fac77f
commit
3ec524b52e
106
lesson1/QML.py
Normal file
106
lesson1/QML.py
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import sys
|
||||||
|
from PyQt5.QtWidgets import *
|
||||||
|
from PyQt5.QtQuickWidgets import QQuickWidget
|
||||||
|
from PyQt5.QtCore import QUrl, pyqtSignal, pyqtSlot
|
||||||
|
from PyQt5.QtCore import *
|
||||||
|
|
||||||
|
class Widget(QWidget):
|
||||||
|
sigSendToQml = pyqtSignal(str)
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.setWindowTitle('Qt UI Demo')
|
||||||
|
self.setGeometry(100, 100, 640, 480)
|
||||||
|
# self.setStyleSheet("QWidget {background-color: transparent; border: 2px solid black; border-radius: 10px;}")
|
||||||
|
# self.setWindowFlags(Qt.FramelessWindowHint)
|
||||||
|
layout = QVBoxLayout()
|
||||||
|
self.L = QListWidget()
|
||||||
|
layout.addWidget(self.L)
|
||||||
|
self.quickWidget = QQuickWidget()
|
||||||
|
self.quickWidget.setFocus()
|
||||||
|
self.quickWidget.setResizeMode(QQuickWidget.SizeRootObjectToView)
|
||||||
|
self.quickWidget.setSource(QUrl('qml.qml'))
|
||||||
|
self.Ls = QListWidgetItem(self.L)
|
||||||
|
self.Ls.setSizeHint(self.quickWidget.sizeHint())
|
||||||
|
self.L.addItem(self.Ls)
|
||||||
|
self.L.setItemWidget(self.Ls, self.quickWidget)
|
||||||
|
|
||||||
|
self.quickWidget = QQuickWidget()
|
||||||
|
self.quickWidget.setFocus()
|
||||||
|
self.quickWidget.setResizeMode(QQuickWidget.SizeRootObjectToView)
|
||||||
|
self.quickWidget.setSource(QUrl('qml.qml'))
|
||||||
|
self.Ls = QListWidgetItem(self.L)
|
||||||
|
self.Ls.setSizeHint(self.quickWidget.sizeHint())
|
||||||
|
self.L.addItem(self.Ls)
|
||||||
|
self.L.setItemWidget(self.Ls, self.quickWidget)
|
||||||
|
# layout.addWidget(self.quickWidget)
|
||||||
|
|
||||||
|
self.lineEdit = QLineEdit()
|
||||||
|
layout.addWidget(self.lineEdit)
|
||||||
|
|
||||||
|
send_button = QPushButton('Send')
|
||||||
|
send_button.clicked.connect(self.on_send_clicked)
|
||||||
|
layout.addWidget(send_button)
|
||||||
|
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
self.sigSendToQml.connect(self.quickWidget.rootObject().sigQmlReceiveStr)
|
||||||
|
self.quickWidget.rootObject().sigQmlSendStr.connect(self.slotReceiveFormQml)
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def on_send_clicked(self):
|
||||||
|
self.sigSendToQml.emit(self.lineEdit.text())
|
||||||
|
|
||||||
|
@pyqtSlot(str)
|
||||||
|
def slotReceiveFormQml(self, string):
|
||||||
|
print('Received from QML:', string)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
widget = Widget()
|
||||||
|
widget.show()
|
||||||
|
sys.exit(app.exec_())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import QtQuick 2.9
|
||||||
|
import QtQuick.Controls 2.2
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: root
|
||||||
|
width: 400
|
||||||
|
height: 300
|
||||||
|
color: "transparent" // 设置背景颜色
|
||||||
|
|
||||||
|
border.color: "red" // 设置边框颜色
|
||||||
|
border.width: 5 // 设置边框宽度
|
||||||
|
radius: 10 // 设置圆角半径
|
||||||
|
|
||||||
|
signal sigQmlReceiveStr(string str) //定义接收信号(from QWidget)
|
||||||
|
signal sigQmlSendStr(string str) //定义发送信号(to QWidget)
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
source: "https://tse4-mm.cn.bing.net/th/id/OIP-C.duz6S7Fvygrqd6Yj_DcXAQHaF7?rs=1&pid=ImgDetMain" // 设置图片URL
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 200
|
||||||
|
height: 200
|
||||||
|
fillMode: Image.PreserveAspectFit // 设置图片填充模式
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: text
|
||||||
|
anchors.centerIn: parent
|
||||||
|
color: "red"
|
||||||
|
font.pixelSize: 100
|
||||||
|
text: qsTr("hello world!")
|
||||||
|
}
|
||||||
|
|
||||||
|
onSigQmlReceiveStr: { //信号对应槽函数
|
||||||
|
text.text = str
|
||||||
|
root.sigQmlSendStr("received: " + str) //调用信号
|
||||||
|
}
|
||||||
|
}
|
3150
lesson1/cv2流播放.py
Normal file
3150
lesson1/cv2流播放.py
Normal file
File diff suppressed because it is too large
Load Diff
71
lesson1/list拖拽信号.py
Normal file
71
lesson1/list拖拽信号.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import sys
|
||||||
|
from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QListWidgetItem, QLabel
|
||||||
|
from PyQt5.QtCore import Qt, QMimeData
|
||||||
|
from PyQt5.QtGui import QDrag
|
||||||
|
|
||||||
|
|
||||||
|
class DragLabel(QLabel):
|
||||||
|
def __init__(self, text):
|
||||||
|
super().__init__(text)
|
||||||
|
|
||||||
|
def mousePressEvent(self, event):
|
||||||
|
if event.button() == Qt.LeftButton:
|
||||||
|
drag = QDrag(self)
|
||||||
|
mime_data = QMimeData()
|
||||||
|
mime_data.setText(self.text())
|
||||||
|
drag.setMimeData(mime_data)
|
||||||
|
drag.exec_(Qt.MoveAction)
|
||||||
|
|
||||||
|
|
||||||
|
class ListWidget(QListWidget):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.setAcceptDrops(True)
|
||||||
|
self.setDragEnabled(True)
|
||||||
|
self.setDragDropMode(QListWidget.InternalMove)
|
||||||
|
|
||||||
|
for i in range(10):
|
||||||
|
item = QListWidgetItem(self)
|
||||||
|
label = DragLabel(f'Label {i}')
|
||||||
|
item.setSizeHint(label.sizeHint())
|
||||||
|
self.setItemWidget(item, label)
|
||||||
|
|
||||||
|
def dragEnterEvent(self, event):
|
||||||
|
if event.mimeData().hasText():
|
||||||
|
event.accept()
|
||||||
|
else:
|
||||||
|
event.ignore()
|
||||||
|
|
||||||
|
def dropEvent(self, event):
|
||||||
|
text = event.mimeData().text()
|
||||||
|
item = QListWidgetItem(self)
|
||||||
|
label = DragLabel(text)
|
||||||
|
item.setSizeHint(label.sizeHint())
|
||||||
|
self.setItemWidget(item, label)
|
||||||
|
|
||||||
|
|
||||||
|
class MainWindow(QWidget):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.init_ui()
|
||||||
|
|
||||||
|
def init_ui(self):
|
||||||
|
list_widget1 = ListWidget()
|
||||||
|
list_widget2 = ListWidget()
|
||||||
|
|
||||||
|
self.setGeometry(300, 300, 500, 200)
|
||||||
|
self.setWindowTitle('Drag and Drop Example')
|
||||||
|
|
||||||
|
layout = QHBoxLayout()
|
||||||
|
layout.addWidget(list_widget1)
|
||||||
|
layout.addWidget(list_widget2)
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
self.show()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
main_window = MainWindow()
|
||||||
|
sys.exit(app.exec_())
|
69
lesson1/maya_qt.py
Normal file
69
lesson1/maya_qt.py
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from maya import OpenMaya, mel, cmds
|
||||||
|
import pymel.core as pm
|
||||||
|
import pymel.core as pm
|
||||||
|
from maya import cmds, mel, utils, OpenMaya
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from PySide6.QtCore import Qt, QByteArray
|
||||||
|
from PySide6.QtWidgets import QApplication, QMainWindow, QDockWidget, QListWidget, QTextEdit, QPushButton, QWidget
|
||||||
|
from PySide6.QtCore import QSettings, QDataStream
|
||||||
|
|
||||||
|
|
||||||
|
class MainWindow(QMainWindow):
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(MainWindow, self).__init__(parent)
|
||||||
|
|
||||||
|
|
||||||
|
self.setObjectName('MainWindow')
|
||||||
|
b = QPushButton('此为中央控件,点击保存布局')
|
||||||
|
b.clicked.connect(self.save_layout)
|
||||||
|
self.setCentralWidget(b)
|
||||||
|
|
||||||
|
self.setWindowTitle('Dock 例子')
|
||||||
|
self.load_layout()
|
||||||
|
def save_layout(self):
|
||||||
|
settings = QSettings(r"C:\Users\Jcen\PycharmProjects\pythonProject\settings.ini", QSettings.IniFormat)
|
||||||
|
settings.setValue("geometry", self.saveGeometry())
|
||||||
|
settings.setValue("state", self.saveState())
|
||||||
|
|
||||||
|
settings.beginGroup("dockWidgets")
|
||||||
|
dock_widgets = self.findChildren(QDockWidget)
|
||||||
|
for dock_widget in dock_widgets:
|
||||||
|
settings.setValue("%s%s" % (dock_widget.windowTitle(), dock_widget.objectName()), dock_widget.saveGeometry())
|
||||||
|
|
||||||
|
def load_layout(self):
|
||||||
|
settings = QSettings(r"C:\Users\Jcen\PycharmProjects\pythonProject\settings.ini", QSettings.IniFormat)
|
||||||
|
settings.beginGroup("dockWidgets")
|
||||||
|
for key in settings.allKeys():
|
||||||
|
self.items = QDockWidget('%s' % (key[:-1]), self)
|
||||||
|
self.items.setObjectName('%s' % (key[-1:]))
|
||||||
|
self.addDockWidget(Qt.RightDockWidgetArea, self.items)
|
||||||
|
|
||||||
|
settings.endGroup()
|
||||||
|
self.restoreGeometry(settings.value("geometry"))
|
||||||
|
self.restoreState(settings.value("state"))
|
||||||
|
|
||||||
|
|
||||||
|
def create_tab(
|
||||||
|
dock_name,
|
||||||
|
widget,
|
||||||
|
label='WidgetLabel',
|
||||||
|
dockTab='Channel Box / Layer Editor'
|
||||||
|
):
|
||||||
|
cmds.workspaceControl(dock_name, uiScript='', label=label)
|
||||||
|
cmds.control(str(widget.objectName()), e=True, p=dock_name)
|
||||||
|
tab_result = mel.eval('getUIComponentDockControl("{}", false)'.format(dockTab))
|
||||||
|
cmds.workspaceControl(dock_name, e=True, tabToControl=(tab_result, -1))
|
||||||
|
|
||||||
|
if OpenMaya.MGlobal.mayaState() == OpenMaya.MGlobal.kInteractive:
|
||||||
|
|
||||||
|
# create project manager tab
|
||||||
|
mayaProjectManager = MainWindow()
|
||||||
|
create_tab(
|
||||||
|
'ProjectManagerDock1201111',
|
||||||
|
mayaProjectManager,
|
||||||
|
label='Project Manager'
|
||||||
|
)
|
47
lesson1/pyqt下重定向.py
Normal file
47
lesson1/pyqt下重定向.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import sys
|
||||||
|
import traceback
|
||||||
|
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QTextEdit
|
||||||
|
from PyQt5.QtCore import Qt
|
||||||
|
|
||||||
|
class MyWindow(QMainWindow):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
self.setWindowTitle("Error Handling Example")
|
||||||
|
self.setGeometry(100, 100, 800, 600)
|
||||||
|
|
||||||
|
# 创建布局和文本编辑部件
|
||||||
|
layout = QVBoxLayout()
|
||||||
|
self.text_edit = QTextEdit()
|
||||||
|
|
||||||
|
# 将文本编辑部件添加到布局中
|
||||||
|
layout.addWidget(self.text_edit)
|
||||||
|
|
||||||
|
# 创建一个小部件并将布局设置为其布局
|
||||||
|
widget = QWidget()
|
||||||
|
widget.setLayout(layout)
|
||||||
|
|
||||||
|
# 将小部件设置为主窗口的中央部件
|
||||||
|
self.setCentralWidget(widget)
|
||||||
|
|
||||||
|
# 重定向错误输出到文本编辑部件
|
||||||
|
sys.excepthook = self.handle_exception
|
||||||
|
|
||||||
|
# 设置文本编辑部件为只读
|
||||||
|
self.text_edit.setReadOnly(True)
|
||||||
|
|
||||||
|
def handle_exception(self, exc_type, exc_value, exc_traceback):
|
||||||
|
# 将错误信息输出到文本编辑部件
|
||||||
|
error_message = ''.join(traceback.format_exception(exc_type, exc_value, exc_traceback))
|
||||||
|
self.text_edit.append(error_message)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app = QApplication([])
|
||||||
|
window = MyWindow()
|
||||||
|
window.show()
|
||||||
|
|
||||||
|
# 产生一个错误
|
||||||
|
print(1 / 0)
|
||||||
|
|
||||||
|
app.exec_()
|
1121
lesson1/qt6截屏.py
Normal file
1121
lesson1/qt6截屏.py
Normal file
File diff suppressed because it is too large
Load Diff
2
lesson1/链接.py
Normal file
2
lesson1/链接.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
create_action.triggered.connect(functools.partial(self.create_action_func, i))
|
Loading…
Reference in New Issue
Block a user