Skills Plugins MCP Prompt Model 博客 我的中心

pyqt

PyQt/PySide6 overview hub - installation, comparison, project structure. See sub-skills for detailed topics.

DeepseekModel キュレーション済みスキル 品質 優秀 · 78 v1.0.0

取得

https://deepseekmodel.com/api/download.php?id=mte90-dotfiles-config-opencode-skills-pyqt-skill-md&format=skill
ダウンロード .skill 標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能
.skill ファイルの system_prompt フィールドの実際の内容。
name pyqt description PyQt/PySide6 overview hub - installation, comparison, project structure. See sub-skills for detailed topics. metadata {"author":"mte90","version":"2.0.0","tags":["python","qt","pyqt","pyside","gui","desktop","hub"]} PyQt/PySide Development PyQt and PySide are Python bindings for the Qt application framework for building cross-platform desktop applications. Sub-Skills For detailed information, see the specialized sub-skills: Skill Description Path pyqt-core Signals, slots, timers, settings, file I/O core/SKILL.md pyqt-widgets All widgets and layouts widgets/SKILL.md pyqt-threading QThread, thread pools, concurrency threading/SKILL.md pyqt-dialogs Standard and custom dialogs dialogs/SKILL.md pyqt-testing pytest-qt testing patterns testing/SKILL.md pyqt-styling QSS styling and themes styling/SKILL.md pyqt-multimedia Audio, video, camera, recording multimedia/SKILL.md PyQt vs PySide Comparison Feature PyQt5 PyQt6 PySide6 License GPL GPL LGPL Qt Version Qt 5 Qt 6 Qt 6 Maintained Security only Active Active Signal Syntax pyqtSignal pyqtSignal Signal Slot Syntax pyqtSlot pyqtSlot Slot Property Syntax pyqtProperty pyqtProperty Property Commercial Use Requires license Requires license Free QML Registration qmlRegisterType() qmlRegisterType() @QmlElement When to Use Each PySide6 : Recommended for most projects (LGPL, official Qt Company support) PyQt6 : If you need GPL compatibility or existing PyQt codebase PyQt5 : Legacy projects only (security fixes only) Installation PySide6 (Recommended) pip install PySide6 PyQt6 pip install PyQt6 PyQt5 (Legacy) pip install PyQt5 Additional Dependencies # System packages (Ubuntu/Debian) sudo apt install libgl1-mesa-glx libglib2.0-0 # System packages (Fedora) sudo dnf install mesa-libGL glib2 # System packages (Arch) sudo pacman -S mesa glib2 Basic Application #!/usr/bin/env python3 import sys from PySide6.QtWidgets import QApplication, QMainWindow, QLabel from PySide6.QtCore import Qt class MainWindow ( QMainWindow ): def __init__ ( self ): super ().__init__() self .setWindowTitle( "My Application" ) self .setGeometry( 100 , 100 , 800 , 600 ) label = QLabel( "Hello, Qt!" ) label.setAlignment(Qt.AlignmentFlag.AlignCenter) self .setCentralWidget(label) def main (): app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app. exec ()) if __name__ == "__main__" : main() Recommended Project Structure my_app/ ├── src/ │ ├── __init__.py │ ├── main.py │ ├── main_window.py │ ├── widgets/ │ │ ├── __init__.py │ │ └── custom_widget.py │ ├── models/ │ │ └── data_model.py │ ├── resources/ │ │ ├── icons/ │ │ └── styles/ │ │ └── style.qss │ └── utils/ │ └── helpers.py ├── tests/ │ └── test_main.py ├── requirements.txt └── pyproject.toml Quick Reference Core Imports # QtWidgets - UI Components from PySide6.QtWidgets import ( QApplication, QMainWindow, QWidget, QLabel, QPushButton, QLineEdit, QTextEdit, QComboBox, QSpinBox, QCheckBox, QRadioButton, QSlider, QProgressBar, QGroupBox, QTabWidget, QStackedWidget, QSplitter, QListWidget, QTreeWidget, QTableWidget, QScrollArea, QToolBar, QStatusBar, QMenuBar, QMenu ) # QtCore - Core Non-GUI from PySide6.QtCore import ( Qt, QObject, QTimer, QThread, Signal, Slot, Property, QSize, QPoint, QRect, QSettings, QFile, QDir, QUrl, QMimeData, QDateTime, QDate, QTime ) # QtGui - Graphics from PySide6.QtGui import ( QIcon, QPixmap, QImage, QPainter, QPen, QBrush, QColor, QFont, QCursor, QKeySequence, QShortcut ) Signal/Slot Basics from PySide6.QtCore import QObject, Signal, Slot class MyObject ( QObject ): valueChanged = Signal( int ) @Slot( int ) def setValue ( self, value ): self ._value = value self .valueChanged.emit(value) # Connect button.clicked.connect( self .onButtonClick) # Emit self .valueChanged.emit( 42 ) Layout Basics from PySide6.QtWidgets import QVBoxLayout, QHBoxLayout, QGridLayout, QFormLayout # Vertical layout = QVBoxLayout() layout.addWidget(label) layout.addWidget(button) # Horizontal h_layout = QHBoxLayout() h_layout.addWidget(left) h_layout.addWidget(right) # Grid grid = QGridLayout() grid.addWidget(label, 0 , 0 ) grid.addWidget( input , 0 , 1 ) # Form form = QFormLayout() form.addRow( "Name:" , nameEdit) Signals and Slots Signal Declaration from PySide6.QtCore import QObject, Signal class MyObject ( QObject ): # Define signals at class level valueChanged = Signal( int ) nameChanged = Signal( str ) dataReady = Signal( dict ) errorOccurred = Signal( str ) # Signal with multiple arguments positionChanged = Signal( int , int ) Slot Declaration from PySide6.QtCore import Slot class MyObject ( QObject ): @Slot() def doSomething ( self ): print ( "Action performed" ) @Slot( int ) def setValue ( self, value ): self ._value = value @Slot( str , int ) def processData ( self, name, count ): pass @Slot( result= str ) # Return type annotation def getName ( self ) -> str : return self ._name Connecting Signals to Slots # Connect signal to slot button.clicked.connect( self .onButtonClick) valueChanged.connect( self .updateValue) # Connect with lambda button.clicked.connect( lambda : print ( "Clicked!" )) # Connect with partial from functools import partial button.clicked.connect(partial( self .processItem, item_id)) # Disconnect button.clicked.disconnect( self .onButtonClick) # Emit signal self .valueChanged.emit( 42 ) self .positionChanged.emit(x, y) # Block signals temporarily button.blockSignals( True ) button.setChecked( True ) button.blockSignals( False ) PyQt6 Syntax (Different) from PyQt6.QtCore import QObject, pyqtSignal, pyqtSlot class MyObject ( QObject ): valueChanged = pyqtSignal( int ) @pyqtSlot( int ) def setValue ( self, value ): pass Layout Management Box Layouts from PySide6.QtWidgets import QVBoxLayout, QHBoxLayout, QGroupBox # Vertical layout layout = QVBoxLayout() layout.addWidget(label) layout.addWidget(button) layout.addStretch() # Add stretchable space layout.addWidget(bottom_label) # Horizontal layout h_layout = QHBoxLayout() h_layout.addWidget(left_button) h_layout.addStretch() h_layout.addWidget(right_button) # Nest layouts main_layout = QVBoxLayout() main_layout.addLayout(h_layout) Grid Layout from PySide6.QtWidgets import QGridLayout layout = QGridLayout() layout.addWidget(label1, 0 , 0 ) # row 0, col 0 layout.addWidget(lineEdit, 0 , 1 ) # row 0, col 1 layout.addWidget(label2, 1 , 0 ) # row 1, col 0 layout.addWidget(comboBox, 1 , 1 ) # row 1, col 1 # Span multiple cells layout.addWidget(bigWidget, 2 , 0 , 1 , 2 ) # row 2, col 0, span 1 row, 2 cols Form Layout from PySide6.QtWidgets import QFormLayout layout = QFormLayout() layout.addRow( "Name:" , nameLineEdit) layout.addRow( "Email:" , emailLineEdit) layout.addRow( "Age:" , ageSpinBox) Stack Layout from PySide6.QtWidgets import QStackedLayout stack = QStackedLayout() stack.addWidget(page1) stack.addWidget(page2) stack.addWidget(page3) stack.setCurrentIndex( 0 ) # Show page1 Layout Properties # Margins and spacing layout.setContentsMargins( 10 , 10 , 10 , 10 ) # left, top, right, bottom layout.setSpacing( 5 ) # Widget alignment layout.addWidget(label, alignment=Qt.AlignCenter) # Stretch factors layout.addWidget(widget1, stretch= 1 ) layout.addWidget(widget2, stretch= 2 ) # Gets twice the space Common Widgets Labels and Display # Label label = QLabel( "Text" ) label.setText( "New text" ) label.setPixmap(QPixmap( "image.png" )) label.setAlignment(Qt.AlignCenter) label.setWordWrap( True ) # Progress bar progress = QProgressBar() progress.setValue( 50 ) progress.setRange( 0 , 100 ) progress.setTextVisible( True ) # LCD Number lcd = QLCDNumber() lcd.display( 123 ) Input Widgets # Line edit lineEdit = QLineEdit() lineEdit.setText( "Default" ) lineEdit.setPlaceholderText( "Enter text..." ) lineEdit.setEchoMode(QLineEdit.Password) lineEdit.setMaxLength( 100 ) lineEdit.textChanged.connect( self .onTextChanged) # Text edit textEdit = QTextEdit() textEdit.setPlainText( "Plain text" ) textEdit.setHtml( "<b>HTML</b>" ) textEdit.toPlainText() # Spin box spinBox = QSpinBox() spinBox.setRange( 0 , 100 ) spinBox.setValue( 50 ) spinBox.setSuffix( " px" ) spinBox.valueChanged.connect( self .onValueChanged) # Combo box comboBox = QComboBox() comboBox.addItems([ "Option 1" , "Option 2" , "Option 3" ]) comboBox.setCurrentIndex( 0 ) comboBox.currentTextChanged.connect( self .onSelectionChanged) # Checkbox checkBox = QCheckBox( "Enable feature" ) checkBox.setChecked( True ) checkBox.stateChanged.connect( self .onStateChanged) # Radio button radio1 = QRadioButton( "Option A" ) radio2 = QRadioButton( "Option B" ) radio1.setChecked( True ) radio1.toggled.connect( self .onToggled) # Slider slider = QSlider(Qt.Horizontal) slider.setRange( 0 , 100 ) slider.setValue( 50 ) slider.valueChanged.connect( self .onSliderChanged) Buttons # Push button button = QPushButton( "Click Me" ) button.clicked.connect( self .onButtonClick) button.setEnabled( False ) button.setDefault( True ) # Tool button toolButton = QToolButton() toolButton.setIcon(QIcon( "icon.png" )) toolButton.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) # Checkable button checkButton = QPushButton( "Toggle" ) checkButton.setCheckable( True ) checkButton.toggled.connect( self .onToggle) Container Widgets # Group box groupBox = QGroupBox( "Settings" ) groupBox.setCheckable( True ) groupBox.setChecked( True ) # Tab widget tabWidget = QTabWidget() tabWidget.addTab(page1, "Tab 1" ) tabWidget.addTab(page2, "Tab 2" ) tabWidget.setCurrentIndex( 0 ) # Scroll area scrollArea = QScrollArea() scrollArea.setWidget(contentWidget) scrollArea.setWidgetResizable( True ) # Splitter splitter = QSplitter(Qt.Horizontal) splitter.addWidget(leftWidget) splitter.addWidget(rightWidget) splitter.setSizes([ 200 , 400 ]) Item Views # List widget listWidget = QListWidget() listWidget.addItems([ "Item 1" , "Item 2" , "Item 3" ]) listWidget.currentItemChanged.connect( self .onItemChanged) # Tree widget treeWidget = QTreeWidget() treeWidget.setHeaderLabels([ "Name" , "Value" ]) item = QTreeWidgetItem([ "Parent" , "0" ]) child = QTreeWidgetItem([ "Child" , "1" ]) item.addChild(child) treeWidget.addTopLevelItem(item) # Table widget table = QTableWidget() table.setRowCount( 3 )
このスキルを起動するキーワード。クリックでコピーできます。

このスキルにはトリガーワードがありません。

ダウンロードした .skill に含まれるフィールド。
フィールド 説明
formatフォーマット識別子(skill/v1)
skill_idスキル固有 ID
nameスキル名
versionバージョン
description説明
categoryカテゴリ(配列)
trigger_wordsトリガーワード
tagsタグ
sourceソース
source_urlソース URL(本ページ)
exported_atエクスポート日時(ダウンロード毎)
system_promptシステムプロンプト本文
model_configモデル設定:provider / model / temperature / max_tokens / top_p
examplesサンプル
install_guide各プラットフォームの導入説明(Coze / Dify / Claude / カスタム)
同じスキルを各プラットフォーム形式で出力できます。
.skill 標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能 ダウンロード
.skillpro 拡張形式。scripts / tools / dependencies / hooks を含む ダウンロード
.json 純粋な JSON 出力。system_prompt とモデル設定のみ ダウンロード
Coze frontmatter 付き Markdown。Coze へのインポート用 ダウンロード
Dify Dify DSL。アプリ作成後にそのままインポート ダウンロード

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。