PySideTutorials Simple Dialog Japanese: Difference between revisions
AutoSpider (talk | contribs) (Convert ExpressionEngine links) |
AutoSpider (talk | contribs) (Convert ExpressionEngine section headers) |
||
Line 41: | Line 41: | ||
PySideのウィジェットはサブクラス化することができます。この例ではQDialogをサブクラス化し、Formというカスタムダイアログを作ります。クラスには ''init()'' メソッドを実装し、このメソッドの中でQDialogの ''init()'' メソッドを呼び出して(superを使います)、親ウィジェットであるparentを渡します。もうひとつ新しいのはsetWindowTitle()です。このメソッドはダイアログウィンドウのタイトルを設定します。また ''main()'' ではFormオブジェクトの作成と表示を行います。 | PySideのウィジェットはサブクラス化することができます。この例ではQDialogをサブクラス化し、Formというカスタムダイアログを作ります。クラスには ''init()'' メソッドを実装し、このメソッドの中でQDialogの ''init()'' メソッドを呼び出して(superを使います)、親ウィジェットであるparentを渡します。もうひとつ新しいのはsetWindowTitle()です。このメソッドはダイアログウィンドウのタイトルを設定します。また ''main()'' ではFormオブジェクトの作成と表示を行います。 | ||
== ウィジェットの作成 == | |||
これから2つのウィジェットを作成します。ユーザーが名前を入力するQLineEditと、その内容を出力するためのQPushButtonです。 では、Formクラスの ''init()'' メソッドに次のコードを追加しましょう。 | これから2つのウィジェットを作成します。ユーザーが名前を入力するQLineEditと、その内容を出力するためのQPushButtonです。 では、Formクラスの ''init()'' メソッドに次のコードを追加しましょう。 | ||
Line 53: | Line 52: | ||
もうお分かりだとおもいますが、ウィジェットはコンストラクタで受け取ったテキストを表示します. | もうお分かりだとおもいますが、ウィジェットはコンストラクタで受け取ったテキストを表示します. | ||
== レイアウトの作成とウィジェットの整理 == | |||
Qtにはアプリケーション上のウィジェットを整理するレイアウトがあります。ここではシンプルに、ウィジェットを垂直に配置するQVBoxLayoutを使います。 ''init()'' メソッドのウィジェット作成後に次のコードを追加します。 | Qtにはアプリケーション上のウィジェットを整理するレイアウトがあります。ここではシンプルに、ウィジェットを垂直に配置するQVBoxLayoutを使います。 ''init()'' メソッドのウィジェット作成後に次のコードを追加します。 | ||
Line 68: | Line 66: | ||
レイアウトを作成したらaddWidget()を使ってウィジェットを追加します。最後にFormのレイアウトとしてQVBoxLayoutを設定します。 | レイアウトを作成したらaddWidget()を使ってウィジェットを追加します。最後にFormのレイアウトとしてQVBoxLayoutを設定します。 | ||
== 挨拶メソッドの作成とボタンとの接続 == | |||
仕上げにFormに機能を追加しましょう。一つはユーザに挨拶をするメソッド、もうひとつはボタンとメソッドとの接続です。このメソッドはFormの一部になるので ''init''() メソッドの後に追加します。 | 仕上げにFormに機能を追加しましょう。一つはユーザに挨拶をするメソッド、もうひとつはボタンとメソッドとの接続です。このメソッドはFormの一部になるので ''init''() メソッドの後に追加します。 | ||
Line 89: | Line 86: | ||
プログラムを実行すると、QLineEditで名前が入力できるようになり、コンソール上に挨拶が表示されます。 | プログラムを実行すると、QLineEditで名前が入力できるようになり、コンソール上に挨拶が表示されます。 | ||
=== やってみよう: === | |||
* 自分の名前をpythonコンソールに表示する代わりに、ポップアップメッセージボックスに表示できますか?QMessageBoxの詳しい解説は [http://www.pyside.org/docs/pyside/PySide/QtGui/QMessageBox.html PySide オンラインリファレンス] をご覧ください。 | * 自分の名前をpythonコンソールに表示する代わりに、ポップアップメッセージボックスに表示できますか?QMessageBoxの詳しい解説は [http://www.pyside.org/docs/pyside/PySide/QtGui/QMessageBox.html PySide オンラインリファレンス] をご覧ください。 | ||
* ウィンドウにアイコンを追加できますか? [http://www.pyside.org/docs/pyside/PySide/QtGui/QWidget.htm PySide オンラインリファレンス] でWidgetの説明を確認しましょう。 | * ウィンドウにアイコンを追加できますか? [http://www.pyside.org/docs/pyside/PySide/QtGui/QWidget.htm PySide オンラインリファレンス] でWidgetの説明を確認しましょう。 | ||
Line 96: | Line 92: | ||
* QHBoxLayoutを使えばレイアウトを水平方向にできます! [http://www.pyside.org/docs/pyside/PySide/QtGui/index.html PySide オンラインリファレンス] で他のレイアウトチェックしましょう。とくにQHBoxLayout、 QGridLayoutなどです。 | * QHBoxLayoutを使えばレイアウトを水平方向にできます! [http://www.pyside.org/docs/pyside/PySide/QtGui/index.html PySide オンラインリファレンス] で他のレイアウトチェックしましょう。とくにQHBoxLayout、 QGridLayoutなどです。 | ||
== コード全体 == | |||
このチュートリアルの完全なコードは次のとおりです。 | このチュートリアルの完全なコードは次のとおりです。 | ||
Revision as of 16:08, 5 March 2015
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 s" self.edit.text())
if name == main:
# Qt Applicationを作ります
app = QApplication(sys.argv)
# formを作成して表示します
form = Form()
form.show()
# Qtのメインループを開始します
sys.exit(app.exec_())