input
だと一行しか文字列入力ができない.
そのため,複数行入力したい場合はinput
をfor
文といったループ処理で繰り返すしかない.
上記のように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 wx
とapp = wx.App()
はメソッドの中に入れた方が良いかもしれない.
⇓他に参考にしたサイト