PySideTutorials Simple Dialog Japanese: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Fix python code)
No edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}


[[Category:LanguageBindings::PySide]]
[[Category:PySide]]
[[Category:LanguageBindings::PySide Japanese]]
[[Category:PySide]]


'''日本語''' [[PySideTutorials_Simple_Dialog|English]]
'''日本語''' [[PySideTutorials_Simple_Dialog|English]]
Line 12: Line 12:
それではダイアログを作成して表示する簡単なプログラムから始めましょう。次のプログラムはチュートリアルを通して更新されていきますが、このままあなたのPySideプロジェクトに使ってもかまいません。
それではダイアログを作成して表示する簡単なプログラムから始めましょう。次のプログラムはチュートリアルを通して更新されていきますが、このままあなたのPySideプロジェクトに使ってもかまいません。


<code>
<pre>
#!/usr/bin/python
#!/usr/bin/python
# -'''- coding: utf-8 -'''-
# -'''- coding: utf-8 -'''-
Line 33: Line 33:
     # Qtのメインループを開始します
     # Qtのメインループを開始します
     sys.exit(app.exec_())
     sys.exit(app.exec_())
</code>
</pre>


前回のチュートリアルに目を通しているなら、コードのほとんどはもう見慣れているでしょう。インポートやQApplicationの作成、そしてQtのメインループの実行は、これまでと変わりありません。ここで唯一目新しいのはクラス定義です。
前回のチュートリアルに目を通しているなら、コードのほとんどはもう見慣れているでしょう。インポートやQApplicationの作成、そしてQtのメインループの実行は、これまでと変わりありません。ここで唯一目新しいのはクラス定義です。
Line 42: Line 42:
これから2つ​​のウィジェットを作成します。ユーザーが名前を入力するQLineEditと、その内容を出力するためのQPushButtonです。 では、Formクラスの ''init()'' メソッドに次のコードを追加しましょう。
これから2つ​​のウィジェットを作成します。ユーザーが名前を入力するQLineEditと、その内容を出力するためのQPushButtonです。 では、Formクラスの ''init()'' メソッドに次のコードを追加しましょう。


<code>
<pre>
# ウィジェットを作ります
# ウィジェットを作ります
self.edit = QLineEdit("Write my name here..")
self.edit = QLineEdit("Write my name here..")
self.button = QPushButton("Show Greetings")
self.button = QPushButton("Show Greetings")
</code>
</pre>


もうお分かりだとおもいますが、ウィジェットはコンストラクタで受け取ったテキストを表示します.
もうお分かりだとおもいますが、ウィジェットはコンストラクタで受け取ったテキストを表示します.
Line 53: Line 53:
Qtにはアプリケーション上のウィジェットを整理するレイアウトがあります。ここではシンプルに、ウィジェットを垂直に配置するQVBoxLayoutを使います。 ''init()'' メソッドのウィジェット作成​後に次のコードを追加します。
Qtにはアプリケーション上のウィジェットを整理するレイアウトがあります。ここではシンプルに、ウィジェットを垂直に配置するQVBoxLayoutを使います。 ''init()'' メソッドのウィジェット作成​後に次のコードを追加します。


<code>
<pre>
# レイアウトを作成し、ウィジェットを追加します
# レイアウトを作成し、ウィジェットを追加します
layout = QVBoxLayout()
layout = QVBoxLayout()
Line 60: Line 60:
# ダイアログのレイアウトを設定します
# ダイアログのレイアウトを設定します
self.setLayout(layout)
self.setLayout(layout)
</code>
</pre>


レイアウトを作成したらaddWidget()を使ってウィジェットを追加します。最後にFormのレイアウトとしてQVBoxLayoutを設定します。
レイアウトを作成したらaddWidget()を使ってウィジェットを追加します。最後にFormのレイアウトとしてQVBoxLayoutを設定します。
Line 67: Line 67:
仕上げにFormに機能を追加しましょう。一つはユーザに挨拶をするメソッド、もうひとつはボタンとメソッドとの接続です。このメソッドはFormの一部になるので ''init''() メソッドの後に追加します。
仕上げにFormに機能を追加しましょう。一つはユーザに挨拶をするメソッド、もうひとつはボタンとメソッドとの接続です。このメソッドはFormの一部になるので ''init''() メソッドの後に追加します。


<code>
<pre>
# ユーザーに挨拶します
# ユーザーに挨拶します
def greetings(self):
def greetings(self):
print ("Hello s" self.edit.text())
    print ("Hello s" self.edit.text())
</code>
</pre>


このメソッドはpythonコンソールにQLineEditの内容を書き込みます。テキストはQLineEdit.text()メソッドで取り出します。
このメソッドはpythonコンソールにQLineEditの内容を書き込みます。テキストはQLineEdit.text()メソッドで取り出します。
Line 77: Line 77:
これで全て材料がそろいました。あとはQPushButtonとForm.greetings()メソッドとを接続するだけです。 ''init()'' メソッドに、次のように追加します。
これで全て材料がそろいました。あとはQPushButtonとForm.greetings()メソッドとを接続するだけです。 ''init()'' メソッドに、次のように追加します。


<code>
<pre>
# ボタンのシグナルとgreetingsスロットを接続します
# ボタンのシグナルとgreetingsスロットを接続します
self.button.clicked.connect(self.greetings)
self.button.clicked.connect(self.greetings)
</code>
</pre>


プログラムを実行すると、QLineEditで名前が入力できるようになり、コンソール上に挨拶が表示されます。
プログラムを実行すると、QLineEditで名前が入力できるようになり、コンソール上に挨拶が表示されます。
Line 93: Line 93:
このチュートリアルの完全なコードは次のとおりです。
このチュートリアルの完全なコードは次のとおりです。


<code>
<pre>
#!/usr/bin/python
#!/usr/bin/python
#-'''- coding: utf-8 -'''-
#-'''- coding: utf-8 -'''-


import sys
import sys
from PySide.QtCore import'''
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtGui import *


class Form(QDialog):
class Form(QDialog):


def ''init''(self, parent=None):
    def __init__(self, parent=None):
super(Form, self).''init''(parent)
        super(Form, self).__init__(parent)
# ウィジェットを作成します。
        # ウィジェットを作成します。
self.edit = QLineEdit("Write my name here")
        self.edit = QLineEdit("Write my name here")
self.button = QPushButton("Show Greetings")
        self.button = QPushButton("Show Greetings")
# レイアウトを作成しウィジェットを追加します
        # レイアウトを作成しウィジェットを追加します
layout = QVBoxLayout()
        layout = QVBoxLayout()
layout.addWidget(self.edit)
        layout.addWidget(self.edit)
layout.addWidget(self.button)
        layout.addWidget(self.button)
# ダイアログのレイアウトを設定します
        # ダイアログのレイアウトを設定します
self.setLayout(layout)
        self.setLayout(layout)
# ボタンのシグナルをgreetingsと接続します
        # ボタンのシグナルをgreetingsと接続します
self.button.clicked.connect(self.greetings)
        self.button.clicked.connect(self.greetings)


# ユーザへ挨拶します
# ユーザへ挨拶します
def greetings(self):
    def greetings(self):
print ("Hello s" self.edit.text())
        print ("Hello", self.edit.text())


if ''name'' == '''main''':
if __name__ == '__main__':
# Qt Applicationを作ります
    # Qt Applicationを作ります
app = QApplication(sys.argv)
    app = QApplication(sys.argv)
# formを作成して表示します
    # formを作成して表示します
form = Form()
    form = Form()
form.show()
    form.show()
# Qtのメインループを開始します
    # Qtのメインループを開始します
sys.exit(app.exec_())
    sys.exit(app.exec_())
</pre>

Latest revision as of 05:16, 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.

日本語 English

PySideの簡単なダイアログアプリケーションの作成

このチュートリアルでは、基本的なウィジェットを持ったシンプルなダイアログの作り方を紹介します。ユーザーが自分の名前をQLineEditに入力し、QPushButtonのクリックで挨拶をするダイアログを作ります。

それではダイアログを作成して表示する簡単なプログラムから始めましょう。次のプログラムはチュートリアルを通して更新されていきますが、このままあなたのPySideプロジェクトに使ってもかまいません。

#!/usr/bin/python
# -'''- coding: utf-8 -'''-

import sys
from PySide.QtCore import *
from PySide.QtGui import *

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.setWindowTitle("My Form")

if __name__ == '__main__':
    # Qt Applicationを作成します
    app = QApplication(sys.argv)
    # formを作成して表示します
    form = Form()
    form.show()
    # Qtのメインループを開始します
    sys.exit(app.exec_())

前回のチュートリアルに目を通しているなら、コードのほとんどはもう見慣れているでしょう。インポートやQApplicationの作成、そしてQtのメインループの実行は、これまでと変わりありません。ここで唯一目新しいのはクラス定義です。

PySideのウィジェットはサブクラス化することができます。この例ではQDialogをサブクラス化し、Formというカスタムダイアログを作ります。クラスには init() メソッドを実装し、このメソッドの中でQDialogの init() メソッドを呼び出して(superを使います)、親ウィジェットであるparentを渡します。もうひとつ新しいのはsetWindowTitle()です。このメソッドはダイアログウィンドウのタイトルを設定します。また main() ではFormオブジェクトの作成と表示を行います。

ウィジェットの作成

これから2つ​​のウィジェットを作成します。ユーザーが名前を入力するQLineEditと、その内容を出力するためのQPushButtonです。 では、Formクラスの init() メソッドに次のコードを追加しましょう。

# ウィジェットを作ります
self.edit = QLineEdit("Write my name here..")
self.button = QPushButton("Show Greetings")

もうお分かりだとおもいますが、ウィジェットはコンストラクタで受け取ったテキストを表示します.

レイアウトの作成とウィジェットの整理

Qtにはアプリケーション上のウィジェットを整理するレイアウトがあります。ここではシンプルに、ウィジェットを垂直に配置するQVBoxLayoutを使います。 init() メソッドのウィジェット作成​後に次のコードを追加します。

# レイアウトを作成し、ウィジェットを追加します
layout = QVBoxLayout()
layout.addWidget(self.edit)
layout.addWidget(self.button)
# ダイアログのレイアウトを設定します
self.setLayout(layout)

レイアウトを作成したらaddWidget()を使ってウィジェットを追加します。最後にFormのレイアウトとしてQVBoxLayoutを設定します。

挨拶メソッドの作成とボタンとの接続

仕上げにFormに機能を追加しましょう。一つはユーザに挨拶をするメソッド、もうひとつはボタンとメソッドとの接続です。このメソッドはFormの一部になるので init() メソッドの後に追加します。

# ユーザーに挨拶します
def greetings(self):
    print ("Hello s" self.edit.text())

このメソッドはpythonコンソールにQLineEditの内容を書き込みます。テキストはQLineEdit.text()メソッドで取り出します。

これで全て材料がそろいました。あとはQPushButtonとForm.greetings()メソッドとを接続するだけです。 init() メソッドに、次のように追加します。

# ボタンのシグナルとgreetingsスロットを接続します
self.button.clicked.connect(self.greetings)

プログラムを実行すると、QLineEditで名前が入力できるようになり、コンソール上に挨拶が表示されます。

やってみよう:

  • 自分の名前をpythonコンソールに表示する代わりに、ポップアップメッセージボックスに表示できますか?QMessageBoxの詳しい解説は PySide オンラインリファレンス をご覧ください。
  • ウィンドウにアイコンを追加できますか? PySide オンラインリファレンス でWidgetの説明を確認しましょう。
  • 閉じるボタンを追加してはどうでしょうか?新しいボタンを作成してレイアウトに追加し、 exitスロットに接続します。
  • QHBoxLayoutを使えばレイアウトを水平方向にできます! PySide オンラインリファレンス で他のレイアウトチェックしましょう。とくにQHBoxLayout、 QGridLayoutなどです。

コード全体

このチュートリアルの完全なコードは次のとおりです。

#!/usr/bin/python
#-'''- coding: utf-8 -'''-

import sys
from PySide.QtCore import *
from PySide.QtGui import *

class Form(QDialog):

    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        # ウィジェットを作成します。
        self.edit = QLineEdit("Write my name here")
        self.button = QPushButton("Show Greetings")
        # レイアウトを作成しウィジェットを追加します
        layout = QVBoxLayout()
        layout.addWidget(self.edit)
        layout.addWidget(self.button)
        # ダイアログのレイアウトを設定します
        self.setLayout(layout)
        # ボタンのシグナルをgreetingsと接続します
        self.button.clicked.connect(self.greetings)

# ユーザへ挨拶します
    def greetings(self):
        print ("Hello", self.edit.text())

if __name__ == '__main__':
    # Qt Applicationを作ります
    app = QApplication(sys.argv)
    # formを作成して表示します
    form = Form()
    form.show()
    # Qtのメインループを開始します
    sys.exit(app.exec_())