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')
if use_pyside: from PySide import QtGui, QtCore else: from PyQt4 import QtGui, QtCore
PySide をインストールすると、一緒に Qt Designer も入っています。 場所はちょっとわかりづらいですがPython のインストール場所\Lib\site-packages\PySide内にdesigner.exeがあります。 英語ですが、特に問題なく使用できます。
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_())
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_())
→Embed Matplotlib into PyQt as a custom widget
widget = QWidget() palette = QPalette() palette.setColor(QPalette.Background, Qt.black widget.setAutoFillBackground(True) widget.setPalette(palette)
widget = QWidget() widget.setStyleSheet("background-color:white;") widget.show()
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....")
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
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
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
PySideでリストをカスタマイズするぞ! ~基礎編「model/viewアーキテクチャ」~
PySideでリストをカスタマイズするぞ! ~応用編「delegate」~
def minimumSizeHint(self): """最小サイズ値の定義(オーバーライド)""" return QtCore.QSize(50, 50)
def sizeHint(self): """規定サイズ値の定義(オーバーライド)""" return QtCore.QSize(180, 180)
painter.setRenderHint(QtGui.QPainter.Antialiasing, self.antialiased)
painter.translate(0, self.height() / 2)
def settingLine(self, painter): """ ラインを引く ラインを引くためには、QPenオブジェクトを生成し、設定を行う :link: https://srinikom.github.io/pyside-docs/PySide/QtGui/QPen.html :link: http://zetcode.com/gui/pysidetutorial/drawing/ """
# QPenの生成 # ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
# 線の太さの設定 pen.setWidth(3)
# Cap Style 線の端部の形状変更 pen.setCapStyle(QtCore.Qt.SquareCap) # 四角 pen.setCapStyle(QtCore.Qt.FlatCap) # 四角 pen.setCapStyle(QtCore.Qt.RoundCap) # 丸
# Join Style: 線の角部の形状 pen.setJoinStyle(QtCore.Qt.BevelJoin) # フラット pen.setJoinStyle(QtCore.Qt.MiterJoin) # 角 pen.setJoinStyle(QtCore.Qt.RoundJoin) # 丸
# 線の種類の変更 pen.setStyle(QtCore.Qt.SolidLine) # ソリッド pen.setStyle(QtCore.Qt.DashLine) # 破線 pen.setStyle(QtCore.Qt.DotLine) # 点線 pen.setStyle(QtCore.Qt.DashDotLine) # 1点破線 pen.setStyle(QtCore.Qt.DashDotDotLine) # 2点は線 pen.setStyle(QtCore.Qt.CustomDashLine) # ユーザ指定 pen.setDashPattern([1, 4, 5, 4])
# プロパティの適用 (おまじない) painter.setPen(pen) # drawLine(int,int,int,int) painter.drawLine(0, np.ceil(self.height() / 2), self.width(), np.ceil(self.height() / 2))
def settingText(self, event, painter): """ 文字の書き方 QtGui.QPainter.drawText(r, flags, text) :link: https://srinikom.github.io/pyside-docs/PySide/QtGui/QPainter.html?highlight=drawtext#PySide.QtGui.PySide.QtGui.QPainter.drawText """ # 書きだす文字 text = 'Graph Title' # 文字の色を設定 painter.setPen(QtGui.QColor(168, 34, 3)) # 文字のフォントと、文字サイズを設定 painter.setFont(QtGui.QFont('Decorative', 30))
# テキストの表示位置 # ::::::::::::::::::::::::::::::::::: # QtCore.Qt.AlignLeft # QtCore.Qt.AlignRight # QtCore.Qt.AlignHCenter # QtCore.Qt.AlignJustify # QtCore.Qt.AlignTop # QtCore.Qt.AlignBottom # QtCore.Qt.AlignVCenter # QtCore.Qt.AlignCenter # QtCore.Qt.TextDontClip # QtCore.Qt.TextSingleLine # QtCore.Qt.TextExpandTabs # QtCore.Qt.TextShowMnemonic # QtCore.Qt.TextWordWrap # QtCore.Qt.TextIncludeTrailingSpaces
painter.drawText(event.rect(), QtCore.Qt.AlignHCenter, text) # painter.drawText(event.rect(), QtCore.Qt.AlignTop|QtCore.Qt.TextWordWrap, text) # painter.drawText(int(x0), int(y0), int(w), int(h), QtCore.Qt.AlignLeft, self.text)
pen.setColor(QtCore.Qt.black) pen.setWidth(2) painter.setPen(pen) painter.setBrush(QtGui.QBrush(QtCore.Qt.green, QtCore.Qt.Dense7Pattern)) qpoints = [QtCore.QPointF(radius * np.sin(2. * np.pi / N * i)*self.rcData_normarized[i], -1. * radius * np.cos(2. * np.pi / N * i)*self.rcData_normarized[i]) for i in range(0, N)] poly = QtGui.QPolygonF(qpoints) painter.drawPolygon(poly)