PySideSimplicissimus Module 2 CloseButton Japanese: Difference between revisions
AutoSpider (talk | contribs) (Change category "LanguageBindings::PySide::Newbie Tutorials" -> "PySide") |
No edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Cleanup | reason=Auto-imported from ExpressionEngine.}} | {{Cleanup | reason=Auto-imported from ExpressionEngine.}} | ||
[[Category: | [[Category:PySide]] | ||
[[Category:PySide]] | [[Category:PySide]] | ||
[[Category:PySide]] | [[Category:PySide]] | ||
Line 21: | Line 21: | ||
ダウンロードしたら、次のようにPythonで読める形式に変換します: | ダウンロードしたら、次のようにPythonで読める形式に変換します: | ||
< | <pre> | ||
pyside-uic quitter.ui -o ui_quitter.py | pyside-uic quitter.ui -o ui_quitter.py | ||
</ | </pre> | ||
ちょっとややこしいですが、別のコマンドを使い、Pythonが読める形式のファイル '''ui_quitter.py''' を作成しました。ファイルの命名規則は、名前を1つ覚えるだけ( '''quitter''' )で済む様にすると便利です。名前の残りの部分で、そのファイルの目的が分かるようにします。 | ちょっとややこしいですが、別のコマンドを使い、Pythonが読める形式のファイル '''ui_quitter.py''' を作成しました。ファイルの命名規則は、名前を1つ覚えるだけ( '''quitter''' )で済む様にすると便利です。名前の残りの部分で、そのファイルの目的が分かるようにします。 | ||
Line 29: | Line 29: | ||
注:setuptoolsがインストールされていないのに pyside-uic を実行すると、次のエラーが発生します。 | 注:setuptoolsがインストールされていないのに pyside-uic を実行すると、次のエラーが発生します。 | ||
< | <pre> Traceback (most recent call last): | ||
File "c:26\Scripts\pyside-uic-script.py", line 5, in <module> | File "c:26\Scripts\pyside-uic-script.py", line 5, in <module> | ||
from pkg_resources import load_entry_point | from pkg_resources import load_entry_point | ||
ImportError: No module named pkg_resources</ | ImportError: No module named pkg_resources</pre> | ||
setuptoolsはここにあります: [http://pypi.python.org/pypi/setuptools http://pypi.python.org/pypi/setuptools] | setuptoolsはここにあります: [http://pypi.python.org/pypi/setuptools http://pypi.python.org/pypi/setuptools] | ||
Line 38: | Line 38: | ||
プログラムの一覧は次のとおりです: | プログラムの一覧は次のとおりです: | ||
< | <pre> | ||
#!/usr/bin/env python | #!/usr/bin/env python | ||
# quitter.py- provide a button to quit this "program" | # quitter.py- provide a button to quit this "program" | ||
Line 58: | Line 58: | ||
frame.show() | frame.show() | ||
app.exec_() | app.exec_() | ||
</ | </pre> | ||
プログラムを実行すると、いつもの[x]のクリックと、ボタンのクリックのどちらからでもプログラムを終了できることが分かります。次のリンク先で、このGUIの画像を見ることができます: | プログラムを実行すると、いつもの[x]のクリックと、ボタンのクリックのどちらからでもプログラムを終了できることが分かります。次のリンク先で、このGUIの画像を見ることができます: |
Latest revision as of 05:20, 10 May 2017
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine. Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean. |
- 注: この記事は PySide_Newbie_Tutorialsの部分的な一部です。
閉じる
この例は5分以上かからないでしょう: このプログラムの目的は、 pushButton のクリックでプログラムの実行を終了できるようにすることです。いつものように Qt Designer から始めましょう。プログラムに少し色をそえて quitter(怠け者) と呼ぶことにします。そして Designer で作成した、ボタンを一つ持ったMainWindowを quitter.ui という名前で保存します。このファイルは私のホームページ内のディレクトリからダウンロードできます。
- quitter.ui from: http://akabaila.pcug.org.au/pyside-data/quitter.ui
便利なように quitter.py のソースコードも同じ場所からダウンロードできるようにしてあります:
- quitter.py from: http://akabaila.pcug.org.au/pyside-data/quitter.py
ダウンロードしたら、次のようにPythonで読める形式に変換します:
pyside-uic quitter.ui -o ui_quitter.py
ちょっとややこしいですが、別のコマンドを使い、Pythonが読める形式のファイル ui_quitter.py を作成しました。ファイルの命名規則は、名前を1つ覚えるだけ( quitter )で済む様にすると便利です。名前の残りの部分で、そのファイルの目的が分かるようにします。
注:setuptoolsがインストールされていないのに pyside-uic を実行すると、次のエラーが発生します。
Traceback (most recent call last): File "c:26\Scripts\pyside-uic-script.py", line 5, in <module> from pkg_resources import load_entry_point ImportError: No module named pkg_resources
setuptoolsはここにあります: http://pypi.python.org/pypi/setuptools
プログラムの一覧は次のとおりです:
#!/usr/bin/env python # quitter.py- provide a button to quit this "program" import sys from PySide.QtGui import QMainWindow, QPushButton, QApplication from ui_quitter import Ui_MainWindow class MainWindow(QMainWindow, Ui_MainWindow): def ''init''(self, parent=None): super(MainWindow, self).''init''(parent) self.setupUi(self) if ''name'' == '''main''': app = QApplication(sys.argv) frame = MainWindow() frame.show() app.exec_()
プログラムを実行すると、いつもの[x]のクリックと、ボタンのクリックのどちらからでもプログラムを終了できることが分かります。次のリンク先で、このGUIの画像を見ることができます:
では、コードをじっくりと観察してみましょう。ボタンにプログラムの終了を可能しているのは、どこでしょうか?なさそうですね…
見あたらない理由は、この機能が Qt Designer 上で作成されたからです。 Designer は シグナルスロットエディタ を持っています。これを使って、こっそりとPushButton.click()シグナルとMainWindow.close()スロットを接続しました。これはquitter.uiファイルに埋めこまれ、その後の変換処理によって、ui_quitter.pyファイルに埋めこまれます。そしてこのファイルからUi_MainWindowクラスをインポートしました。このクラスはまたMainWindowクラスの祖先の一つでもあります。 Pythonの多重継承 を使って、ui_quitter.pyモジュール内のメソッドを簡単に使えるようにします 。
他にも様々なやり方があるので多重継承を避けることもできましたが、便利なら使ってもかまいませんよね? super は祖先へ掘り下げていって、 MainWindow の直近の祖先、つまり祖先のツリー全体を初期化します。
MainWindow の init メソッドで、その親に None を指定していることに気がついたでしょうか。これは MainWindow が、このプログラムの本当の メインウィンドウ であることをPySideに伝える指示のようなものです。