PySideSimplicissimus Module 4 ShowLicence Japanese
- 注 : この記事は PySide_Newbie_Tutorials の一部です。
日本語 English ["French":http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/3-licence/]
ライセンスを表示する
この例では GPL ライセンスを表示しますが、 PySide は LGPL でリリースしているのでご注意ください。正しいライセンスが表示されているか確認しましょう。
今回は便利なようにファイルを外部リポジトリに格納しています: COPYING.txt, licence.ui と licence.py です。ファイルは次の場所にあります: "COPYING.txt":http://akabaila.pcug.org.au/pyside-data/COPYING.txt, "licence.ui":http://akabaila.pcug.org.au/pyside-data/licence.ui, "licence.py":http://akabaila.pcug.org.au/pyside-data/licence.py.
ダウンロードした後、 COPYING.txt をプログラムと同じディレクトリに配置してください 。このファイルには GPL v2 が記載されています。 licence.ui を次のようにPythonファイルに変換します:
<br />pyside-uic licence.ui > ui_licence.py<br />
プログラム一覧は次のとおりです:
<br />#!/usr/bin/env python<br /># licence.py - display GPL licence
import sys
from PySide.QtGui import QApplication, QMainWindow, QTextEdit, QPushButton
from ui_licence import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):<br /> def ''init''(self, parent=None):<br /> '''Mandatory initialisation of a class.'''<br /> super(MainWindow, self).''init''(parent)<br /> self.setupUi(self)<br /> self.showButton.clicked.connect(self.fileRead)
def fileRead(self):<br /> '''Read and display GPL licence.'''<br /> self.textEdit.setText(open('COPYING.txt').read())
if ''name'' == '''main''':<br /> app = QApplication(sys.argv)<br /> frame = MainWindow()<br /> frame.show()<br /> app.exec_()<br />
プログラムを実行してボタンをクリックすると、TextEditウィンドウにライセンスの一覧が表示されます。以下のリンクをクリックして画像を確認してください。外部に保存しています:
*
コード全体は About と Close スクリプトにとてもよく似ています。ここで興味深い構文が2つあります:
<br />self.showButton.clicked.connect(self.fileRead)<br />
このプッシュボタンはライセンスを表示するので showButton と名付けました。この構文で、クラスメソッド fileRead と showButton.clicked イベントを接続します。これによって showButton がクリックされると、Pythonのクラスメソッド fileRead が実行されます。 fileRead は次のPython的な構文を持ちます:
<br />self.textEdit.setText(open('COPYING.txt').read())<br />
内容を明快に伝えるやり方ではありませんが、Pythonプログラマーはこのように書くのを好みます。このコードは次の構文と同じ意味です:
<br />#open file<br />fl = open('COPYING.txt')<br />tmp = fl.read()<br />self.textEdit.setText(tmp)<br />
こちらのほうがより明快ですね。しかしタイピング量が増え、Pythonがインタプリタ言語なので実行が少し遅くなります。どちらのスタイルを選ぶかは、個人の判断になります。