🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

textbox

HTMLの<input type="text">で生成されるtextboxに関するタグです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

2507閲覧

PyQt5にて入力した文字列の返し方を教えて下さい。

jiaetakoga

総合スコア96

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

textbox

HTMLの<input type="text">で生成されるtextboxに関するタグです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2019/09/16 02:23

前提・実現したいこと

PyQt5にて、テキストボックスに文字列を入力し、ボタンを押すと、 'Hello,入力された文字列' を返す簡単なGUIを作成したいと思っています。
ボタン、テキストボックスは配置できましたが、入力されたものをどのように紐付けすればいいか分からないので教えていただけると嬉しいです。

該当のソースコード

import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QPushButton, QLineEdit class ExampleWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.resize(250, 150) self.move(300, 300) self.setWindowTitle('sample') # buttonの設定 self.button = QPushButton('表示') # テキストボックスの設定 self.text = QLineEdit() # レイアウト配置 self.grid = QGridLayout() self.grid.addWidget(self.button, 0, 3, 1, 1) self.grid.addWidget(self.text, 0, 0, 1, 1) self.setLayout(self.grid) # 表示 self.show() if __name__ == '__main__': app = QApplication(sys.argv) ew = ExampleWidget() sys.exit(app.exec_())

試したこと

以上のコードから先に進みません、、

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

やるべきことは

  • Buttonが押されたときに実行するハンドラを作る。

 →class ExampleWidgetにハンドラとする関数を作る。

  • 作成したButtonが押されたときにハンドラが呼び出されるように設定する。

 →self.button.clicked.connet(self.関数名)

  • ハンドラの中でテキストボックスの文字列を参照し、どこかにアウトプットする。

 →テキストボックスがself.textなのでそれの内容の参照はself.text.text()でできます。

これらをふまえると以下になります。

Python

1import sys 2from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QPushButton, QLineEdit, QMessageBox 3 4class ExampleWidget(QWidget): 5 6 def __init__(self): 7 super().__init__() 8 self.initUI() 9 10 def initUI(self): 11 self.resize(250, 150) 12 self.move(300, 300) 13 self.setWindowTitle('sample') 14 15 # buttonの設定 16 self.button = QPushButton('表示') 17 self.button.clicked.connect(self.buttonClicked) 18 19 # テキストボックスの設定 20 self.text = QLineEdit() 21 22 # ラベルの設定 23 self.label = QLabel() 24 25 # レイアウト配置 26 self.grid = QGridLayout() 27 self.grid.addWidget(self.button, 0, 3, 1, 1) 28 self.grid.addWidget(self.text, 0, 0, 1, 1) 29 self.grid.addWidget(self.label) 30 self.setLayout(self.grid) 31 32 # 表示 33 self.show() 34 35 def buttonClicked(self): 36 #QMessageBox.about(self, "Title", 'Hello,' + self.text.text()) 37 self.label.setText('Hello,' + self.text.text()) 38 39if __name__ == '__main__': 40 41 app = QApplication(sys.argv) 42 ew = ExampleWidget() 43 sys.exit(app.exec_())

※ラベルを追加してそこに文字列を設定するように変更。

ちなみに、現在は新規ウィンドウが立ち上がっていますが、同ウィンドウ内で完結させることは可能でしょうか?

ラベルを追加してそこに設定するコードに変えました。

「QMessageBox.about」の後の()内には、何を記載するのでしょうか、、?

QMessageBox.about() の第一引数は親ウィンドウ、第二引数はメッセージボックスのウィンドウタイトル、第三引数はメッセージ本文です。詳細はリンク先を参照してください。

投稿2019/09/16 03:24

編集2019/09/16 07:17
nomuken

総合スコア1627

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiaetakoga

2019/09/16 06:56

nomuken さん ありがとうございます! ちなみに、現在は新規ウィンドウが立ち上がっていますが、同ウィンドウ内で完結させることは可能でしょうか?
jiaetakoga

2019/09/16 07:09

nomuken さん ありがとうございます! ちなみに、現在は新規ウィンドウが立ち上がっていますが、同ウィンドウ内で完結させることは可能でしょうか? また、記載頂きました「QMessageBox.about」の後の()内には、何を記載するのでしょうか、、? 無知で申し訳ございませんが、教えていただければ幸いです。
nomuken

2019/09/16 10:02

> 同ウィンドウ内で完結させることは可能でしょうか? > 「QMessageBox.about」の後の()内には、何を記載するのでしょうか、、? 回答欄に説明を追加しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問