PySideSimplicissimus Module 2 CloseButton Japanese: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
* '''注:''' この記事は [[PySide Newbie Tutorials|PySide_Newbie_Tutorials]]の部分的な一部です。
[[Category:LanguageBindings]]<br />[[Category:LanguageBindings::PySide Japanese]]<br />[[Category:LanguageBindings::PySide::Newbie Tutorials]]


'''日本語''' [[PySideSimplicissimus Module 2 CloseButton|English]] [http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/1-fermer/ French] ''[qt-devnet.developpez.com]''
* '''注:''' この記事は [[PySide_Newbie_Tutorials]]の部分的な一部です。


=閉じる=
'''日本語''' [[PySideSimplicissimus_Module_2_CloseButton|English]] [&quot;French&amp;quot;:http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/1-fermer/]
 
= 閉じる =


この例は5分以上かからないでしょう: このプログラムの目的は、 '''pushButton''' のクリックでプログラムの実行を終了できるようにすることです。いつものように '''Qt Designer''' から始めましょう。プログラムに少し色をそえて '''quitter(怠け者)''' と呼ぶことにします。そして '''Designer''' で作成した、ボタンを一つ持ったMainWindowを '''quitter.ui''' という名前で保存します。このファイルは私のホームページ内のディレクトリからダウンロードできます。
この例は5分以上かからないでしょう: このプログラムの目的は、 '''pushButton''' のクリックでプログラムの実行を終了できるようにすることです。いつものように '''Qt Designer''' から始めましょう。プログラムに少し色をそえて '''quitter(怠け者)''' と呼ぶことにします。そして '''Designer''' で作成した、ボタンを一つ持ったMainWindowを '''quitter.ui''' という名前で保存します。このファイルは私のホームページ内のディレクトリからダウンロードできます。
Line 15: Line 17:
ダウンロードしたら、次のようにPythonで読める形式に変換します:
ダウンロードしたら、次のようにPythonで読める形式に変換します:


ちょっとややこしいですが、別のコマンドを使い、Pythonが読める形式のファイル '''ui_quitter.py''' を作成しました。ファイルの命名規則は、名前を1つ覚えるだけ( '''quitter''' )で済む様にすると便利です。名前の残りの部分で、そのファイルの目的が分かるようにします。
<code><br />pyside-uic quitter.ui <s>o ui_quitter.py<br /></code>
<br />ちょっとややこしいですが、別のコマンドを使い、Pythonが読める形式のファイル '''ui_quitter.py''' を作成しました。ファイルの命名規則は、名前を1つ覚えるだけ( '''quitter''' )で済む様にすると便利です。名前の残りの部分で、そのファイルの目的が分かるようにします。
<br />注:setuptoolsがインストールされていないのに pyside-uic を実行すると、次のエラーが発生します。
<br /><code> Traceback (most recent call last):<br /> File &quot;c:26\Scripts\pyside-uic-script.py&amp;quot;, line 5, in &lt;module&amp;gt;<br /> from pkg_resources import load_entry_point<br /> ImportError: No module named pkg_resources</code>
<br />setuptoolsはここにあります: &quot;http://pypi.python.org/pypi/setuptools&amp;quot;:http://pypi.python.org/pypi/setuptools
<br />プログラムの一覧は次のとおりです:
<br /><code><br />#!/usr/bin/env python<br /># quitter.py</s> provide a button to quit this &quot;program&amp;quot;


注:setuptoolsがインストールされていないのに pyside-uic を実行すると、次のエラーが発生します。
import sys


setuptoolsはここにあります: http://pypi.python.org/pypi/setuptools ''[pypi.python.org]''
from PySide.QtGui import QMainWindow, QPushButton, QApplication


プログラムの一覧は次のとおりです:
from ui_quitter import Ui_MainWindow


プログラムを実行すると、いつもの[x]のクリックと、ボタンのクリックのどちらからでもプログラムを終了できることが分かります。次のリンク先で、このGUIの画像を見ることができます:
class MainWindow(QMainWindow, Ui_MainWindow):<br /> def ''init''(self, parent=None):<br /> super(MainWindow, self).''init''(parent)<br /> self.setupUi(self)


* http://akabaila.pcug.org.au/pyside-images/quit.png
if ''name'' == '''main''':<br /> app = QApplication(sys.argv)<br /> frame = MainWindow()<br /> frame.show()<br /> app.exec_()<br /></code>
 
プログラムを実行すると、いつもの[x]のクリックと、ボタンのクリックのどちらからでもプログラムを終了できることが分かります。次のリンク先で、このGUIの画像を見ることができます:<br />* http://akabaila.pcug.org.au/pyside-images/quit.png


では、コードをじっくりと観察してみましょう。ボタンにプログラムの終了を可能しているのは、どこでしょうか?なさそうですね…
では、コードをじっくりと観察してみましょう。ボタンにプログラムの終了を可能しているのは、どこでしょうか?なさそうですね…
Line 34: Line 44:


'''MainWindow''' の ''init'' メソッドで、その親に '''None''' を指定していることに気がついたでしょうか。これは '''MainWindow''' が、このプログラムの本当の '''メインウィンドウ''' であることをPySideに伝える指示のようなものです。
'''MainWindow''' の ''init'' メソッドで、その親に '''None''' を指定していることに気がついたでしょうか。これは '''MainWindow''' が、このプログラムの本当の '''メインウィンドウ''' であることをPySideに伝える指示のようなものです。
[[PySide Newbie Tutorials|Return to PySideSimplicissimus]]
===Categories:===
* [[:Category:LanguageBindings|LanguageBindings]]
** [[:Category:LanguageBindings::PySide|PySide]]
* [[:Category:LanguageBindings::PySide::Newbie-Tutorials|Newbie Tutorials]]
* [[:Category:LanguageBindings::PySide-Japanese|PySide Japanese]]

Revision as of 09:39, 24 February 2015



日本語 English ["French&quot;:http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/1-fermer/]

閉じる

この例は5分以上かからないでしょう: このプログラムの目的は、 pushButton のクリックでプログラムの実行を終了できるようにすることです。いつものように Qt Designer から始めましょう。プログラムに少し色をそえて quitter(怠け者) と呼ぶことにします。そして Designer で作成した、ボタンを一つ持ったMainWindowを quitter.ui という名前で保存します。このファイルは私のホームページ内のディレクトリからダウンロードできます。

便利なように quitter.py のソースコードも同じ場所からダウンロードできるようにしてあります:

ダウンロードしたら、次のようにPythonで読める形式に変換します:

<br />pyside-uic quitter.ui <s>o ui_quitter.py<br />


ちょっとややこしいですが、別のコマンドを使い、Pythonが読める形式のファイル ui_quitter.py を作成しました。ファイルの命名規則は、名前を1つ覚えるだけ( quitter )で済む様にすると便利です。名前の残りの部分で、そのファイルの目的が分かるようにします。
注:setuptoolsがインストールされていないのに pyside-uic を実行すると、次のエラーが発生します。


 Traceback (most recent call last):<br /> File &quot;c:26\Scripts\pyside-uic-script.py&amp;quot;, line 5, in &lt;module&amp;gt;<br /> from pkg_resources import load_entry_point<br /> ImportError: No module named pkg_resources


setuptoolsはここにあります: "http://pypi.python.org/pypi/setuptools&quot;:http://pypi.python.org/pypi/setuptools
プログラムの一覧は次のとおりです:


<br />#!/usr/bin/env python<br /># quitter.py</s> provide a button to quit this &quot;program&amp;quot;

import sys

from PySide.QtGui import QMainWindow, QPushButton, QApplication

from ui_quitter import Ui_MainWindow

class MainWindow(QMainWindow, Ui_MainWindow):<br /> def ''init''(self, parent=None):<br /> super(MainWindow, self).''init''(parent)<br /> self.setupUi(self)

if ''name'' == '''main''':<br /> app = QApplication(sys.argv)<br /> frame = MainWindow()<br /> frame.show()<br /> app.exec_()<br />

プログラムを実行すると、いつもの[x]のクリックと、ボタンのクリックのどちらからでもプログラムを終了できることが分かります。次のリンク先で、このGUIの画像を見ることができます:
* quit.png

では、コードをじっくりと観察してみましょう。ボタンにプログラムの終了を可能しているのは、どこでしょうか?なさそうですね…

見あたらない理由は、この機能が Qt Designer 上で作成されたからです。 Designerシグナルスロットエディタ を持っています。これを使って、こっそりとPushButton.click()シグナルとMainWindow.close()スロットを接続しました。これはquitter.uiファイルに埋めこまれ、その後の変換処理によって、ui_quitter.pyファイルに埋めこまれます。そしてこのファイルからUi_MainWindowクラスをインポートしました。このクラスはまたMainWindowクラスの祖先の一つでもあります。 Pythonの多重継承 を使って、ui_quitter.pyモジュール内のメソッドを簡単に使えるようにします 。

他にも様々なやり方があるので多重継承を避けることもできましたが、便利なら使ってもかまいませんよね? super は祖先へ掘り下げていって、 MainWindow の直近の祖先、つまり祖先のツリー全体を初期化します。

MainWindowinit メソッドで、その親に None を指定していることに気がついたでしょうか。これは MainWindow が、このプログラムの本当の メインウィンドウ であることをPySideに伝える指示のようなものです。