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