PySideTutorials Simple Dialog Japanese: Difference between revisions
(Fix python code) |
No edit summary |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Cleanup | reason=Auto-imported from ExpressionEngine.}} | {{Cleanup | reason=Auto-imported from ExpressionEngine.}} | ||
[[Category | [[Category:PySide]] | ||
[[Category | [[Category:PySide]] | ||
'''日本語''' [[PySideTutorials_Simple_Dialog|English]] | '''日本語''' [[PySideTutorials_Simple_Dialog|English]] | ||
Line 12: | Line 12: | ||
それではダイアログを作成して表示する簡単なプログラムから始めましょう。次のプログラムはチュートリアルを通して更新されていきますが、このままあなたのPySideプロジェクトに使ってもかまいません。 | それではダイアログを作成して表示する簡単なプログラムから始めましょう。次のプログラムはチュートリアルを通して更新されていきますが、このままあなたのPySideプロジェクトに使ってもかまいません。 | ||
< | <pre> | ||
#!/usr/bin/python | #!/usr/bin/python | ||
# -'''- coding: utf-8 -'''- | # -'''- coding: utf-8 -'''- | ||
Line 21: | Line 21: | ||
class Form(QDialog): | class Form(QDialog): | ||
def __init__(self, parent=None): | |||
super(Form, self).__init__(parent) | |||
self.setWindowTitle("My Form") | |||
if __name__ == '__main__': | if __name__ == '__main__': | ||
# Qt Applicationを作成します | |||
app = QApplication(sys.argv) | |||
# formを作成して表示します | |||
form = Form() | |||
form.show() | |||
# Qtのメインループを開始します | |||
sys.exit(app.exec_()) | |||
</ | </pre> | ||
前回のチュートリアルに目を通しているなら、コードのほとんどはもう見慣れているでしょう。インポートやQApplicationの作成、そしてQtのメインループの実行は、これまでと変わりありません。ここで唯一目新しいのはクラス定義です。 | 前回のチュートリアルに目を通しているなら、コードのほとんどはもう見慣れているでしょう。インポートやQApplicationの作成、そしてQtのメインループの実行は、これまでと変わりありません。ここで唯一目新しいのはクラス定義です。 | ||
Line 44: | Line 42: | ||
これから2つのウィジェットを作成します。ユーザーが名前を入力するQLineEditと、その内容を出力するためのQPushButtonです。 では、Formクラスの ''init()'' メソッドに次のコードを追加しましょう。 | これから2つのウィジェットを作成します。ユーザーが名前を入力するQLineEditと、その内容を出力するためのQPushButtonです。 では、Formクラスの ''init()'' メソッドに次のコードを追加しましょう。 | ||
< | <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") | ||
</ | </pre> | ||
もうお分かりだとおもいますが、ウィジェットはコンストラクタで受け取ったテキストを表示します. | もうお分かりだとおもいますが、ウィジェットはコンストラクタで受け取ったテキストを表示します. | ||
Line 55: | Line 53: | ||
Qtにはアプリケーション上のウィジェットを整理するレイアウトがあります。ここではシンプルに、ウィジェットを垂直に配置するQVBoxLayoutを使います。 ''init()'' メソッドのウィジェット作成後に次のコードを追加します。 | Qtにはアプリケーション上のウィジェットを整理するレイアウトがあります。ここではシンプルに、ウィジェットを垂直に配置するQVBoxLayoutを使います。 ''init()'' メソッドのウィジェット作成後に次のコードを追加します。 | ||
< | <pre> | ||
# レイアウトを作成し、ウィジェットを追加します | # レイアウトを作成し、ウィジェットを追加します | ||
layout = QVBoxLayout() | layout = QVBoxLayout() | ||
Line 62: | Line 60: | ||
# ダイアログのレイアウトを設定します | # ダイアログのレイアウトを設定します | ||
self.setLayout(layout) | self.setLayout(layout) | ||
</ | </pre> | ||
レイアウトを作成したらaddWidget()を使ってウィジェットを追加します。最後にFormのレイアウトとしてQVBoxLayoutを設定します。 | レイアウトを作成したらaddWidget()を使ってウィジェットを追加します。最後にFormのレイアウトとしてQVBoxLayoutを設定します。 | ||
Line 69: | Line 67: | ||
仕上げにFormに機能を追加しましょう。一つはユーザに挨拶をするメソッド、もうひとつはボタンとメソッドとの接続です。このメソッドはFormの一部になるので ''init''() メソッドの後に追加します。 | 仕上げにFormに機能を追加しましょう。一つはユーザに挨拶をするメソッド、もうひとつはボタンとメソッドとの接続です。このメソッドはFormの一部になるので ''init''() メソッドの後に追加します。 | ||
< | <pre> | ||
# ユーザーに挨拶します | # ユーザーに挨拶します | ||
def greetings(self): | def greetings(self): | ||
print ("Hello s" self.edit.text()) | |||
</ | </pre> | ||
このメソッドはpythonコンソールにQLineEditの内容を書き込みます。テキストはQLineEdit.text()メソッドで取り出します。 | このメソッドはpythonコンソールにQLineEditの内容を書き込みます。テキストはQLineEdit.text()メソッドで取り出します。 | ||
Line 79: | Line 77: | ||
これで全て材料がそろいました。あとはQPushButtonとForm.greetings()メソッドとを接続するだけです。 ''init()'' メソッドに、次のように追加します。 | これで全て材料がそろいました。あとはQPushButtonとForm.greetings()メソッドとを接続するだけです。 ''init()'' メソッドに、次のように追加します。 | ||
< | <pre> | ||
# ボタンのシグナルとgreetingsスロットを接続します | # ボタンのシグナルとgreetingsスロットを接続します | ||
self.button.clicked.connect(self.greetings) | self.button.clicked.connect(self.greetings) | ||
</ | </pre> | ||
プログラムを実行すると、QLineEditで名前が入力できるようになり、コンソール上に挨拶が表示されます。 | プログラムを実行すると、QLineEditで名前が入力できるようになり、コンソール上に挨拶が表示されます。 | ||
Line 95: | Line 93: | ||
このチュートリアルの完全なコードは次のとおりです。 | このチュートリアルの完全なコードは次のとおりです。 | ||
< | <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 | 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 | if __name__ == '__main__': | ||
# Qt Applicationを作ります | |||
app = QApplication(sys.argv) | |||
# formを作成して表示します | |||
form = Form() | |||
form.show() | |||
# Qtのメインループを開始します | |||
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_())