PySide import 方法

   try:
       from PySide.QtCore import *
       from PySide.QtGui import *
       qt = 1
   except:
       try:
           from PyQt4.QtCore import *
           from PyQt4.QtGui import *
           qt = 2
       except:
           raise Exception('Error load PyQt or PySide')

PySide or PyQt? の使い分け

if use_pyside:
   from PySide import QtGui, QtCore
else:
   from PyQt4 import QtGui, QtCore

qt designer

Qt Designer を使った画面の作成と表示

PySide をインストールすると、一緒に Qt Designer も入っています。 場所はちょっとわかりづらいですがPython のインストール場所\Lib\site-packages\PySide内にdesigner.exeがあります。 英語ですが、特に問題なく使用できます。

ui ファイルを直接読み込む場合

   import os
   import sys
   from PySide import QtGui, QtUiTools
   if __name__ == "__main__":
       app = QtGui.QApplication(sys.argv)
       # Ui Loader
       loader = QtUiTools.QUiLoader()
       # Ui ファイルを読み込んでオブジェクトを取得
       ui = loader.load(os.path.dirname(os.path.abspath(sys.argv[0])) + "/Ui.ui")
       # 表示
       ui.show()
       # 各ウィジェットなどは、デザイナーで設定した名前でアクセスできる
       ui.exit_action.triggered.connect(app.quit)
       sys.exit(app.exec_())

.uiファイルを.pyファイルに変換して使う

pyside-uic.exe Ui.ui > Ui_.py
   from PySide.QtCore import *
   from PySide.QtGui import *

   from Ui_2 import *

   class MainWindow(QMainWindow, Ui_MainWindow):

       def __init__(self, parent=None):
           super(MainWindow, self).__init__(parent)
           self.setupUi(self)

   if __name__ == "__main__":
       app = QApplication([])
       w = MainWindow()
       w.show()
       sys.exit(app.exec_())

PySideでMaplotlibのウィジェットを使う方法

→Embed Matplotlib into PyQt as a custom widget

FigureCnavas?の継承クラス

→Custum FigureCanvas

QWidgetの背景色を変更する

  1. QPalleteを使う方法
widget = QWidget()
palette = QPalette()
palette.setColor(QPalette.Background, Qt.black
widget.setAutoFillBackground(True)
widget.setPalette(palette)
  1. スタイルシート(CSS)を使う方法
widget = QWidget()
widget.setStyleSheet("background-color:white;")
widget.show()

lineEditの文字が変更されたら、ラベルに追加

   self.line_edit = QLineEdit()
   layout.addWidget(self.line_edit)
   self.label = QLabel()
   layout.addWidget(self.label)
   self.line_edit.textChanged.connect(self.line_edit_text_changed)
   self.show()
   def line_edit_text_changed(self, text):
       self.label.setText(text)

ステータスバーにフラッシュ

self.statusbar.showMessage("Error!!! Please check Email and keyfile....")

SIGNALとSLOT

class MainWindow(QMainWindow, Ui_MainWindow):
   # シグナルを生成
   # ここじゃないとうまく動かない
   dataLoaded = Signal()
   dataLoaded = Signal(int)
   def analysis(self):
       # シグナル発行
       self.dataLoaded.emit()
   @Slot()
   def changeGAKey(self, key):
       self.ga_key = key
       print self.ga_key

PyInstaller? and PySide のPEMエラー google App API

NotImplementedError: PKCS12 format is not supported by the PyCrpto library. 

Try converting to a "PEM" (openssl pkcs12 -in xxxxx.p12 -nodes -nocerts > privatekey.pem) or using PyOpenSSL if native code is an option.

→SignedJwtAssertionCredentials on AppEngine doesn't recognize PEM key

p12ファイルを.pemに変更する

openssl pkcs12 -in privatekey.p12 -nodes -nocerts > privatekey.pem

pemをpemに

openssl pkcs8 -nocrypt -in privatekey.pem -passin pass:notasecret -topk8 -out pk.pem

PySideをCSSでデザイン変更する

→PySideのUIをCSSでアレンジしてみる

app = QtGui.QApplication(sys.argv)
# CSSをインポート
app.setStyleSheet(qcss13())
def qcss13():
    s = '''
    QMainWindow{
       background-color: #000;
    }'''
    return s

プログレスバーをステータスバーに表示する

       self.progressBar = QProgressBar()
       self.statusbar.addPermanentWidget(self.progressBar)
       self.progressBar.reset()
       self.progressBar.setVisible(False)
       self.progressBar.setValue(10)
       self.statusBar().showMessage("File opened"+self.fileName, 2000)

ドラッグ&ドロップ可能なツリービュー

http://melpystudio.blog82.fc2.com/blog-entry-115.html

ファイルリストを取り扱う QListView?

PySideでリストをカスタマイズするぞ! ~基礎編「model/viewアーキテクチャ」~

PySideでリストをカスタマイズするぞ! ~応用編「delegate」~

ドラッグアンドドロップを許可する方法

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS