芋の独り言

当ブログへのアクセスは当ブログのプライバシーポリシーに同意したものとみなします.

inputの代わりに自作メソッドで複数行入力する

inputだと一行しか文字列入力ができない. そのため,複数行入力したい場合はinputfor文といったループ処理で繰り返すしかない.

qiita.com

上記のようにmapを使ったり,リスト内包表記を使ったり...
しかし,複数行入力したいという側からするとinput繰り返すのはなんか違う気もする.

何かないかな~っと思ったら,我々にはwxPythonというGUIツールがあることを忘れていた. そして,そのwxPythonにはテキスト入力ダイアログなるものがクラスとして用意されていて, それを使えばいいだけだという結論に至った. inputのようにインタプリタから入力するわけではなくなってしまうが,これで充分だろう.
(それはそれで違う気もするが,まぁ,いいか...)

python-minutes.blogspot.com 以上のサイトのソースを参考に,ほぼコピペでスクリプトを書いてみた. 以下のような自作のメソッドを使えば複数行入力が可能だ.


import wx
app = wx.App()
def input_multi(title:str ="入力ダイアログ",message:str ="文字を入力してください")->str:
    dlg = wx.TextEntryDialog(parent=None, message=message, caption=title,
                value="",
                style=wx.TE_MULTILINE | wx.OK | wx.STAY_ON_TOP)
    dlg.ShowModal()
    dlg.Destroy()

    return dlg.GetValue()

import wxapp = wx.App()はメソッドの中に入れた方が良いかもしれない.

⇓他に参考にしたサイト