python学習中の者です。
ボタンを押すと様々なことができるアプリを作りたいのですが、ボタンの要素が変動的なので、
縦と横の数を入力することで、それに応じたボタン数を配置したいです。
動的でなければ、ボタンの要素をその分だけ書けばいいのですが…。
python
1#! env python 2# -*- coding: utf-8 -*- 3 4import wx 5 6####配列#### 7tate = int(input()) #行数を入力 8yoko = int(input()) #列数を入力 9 10class MyFrame(wx.Frame): 11 def __init__(self): 12 wx.Frame.__init__(self, None, -1, ”パネル”, size=(300,150)) 13 self.comp() 14 15 def comp(self): 16 mainPanel = wx.Panel(self) 17 button1 = wx.Button(mainPanel, -1, "Button 1") 18 button2 = wx.Button(mainPanel, -1, "Button 2") 19 button3 = wx.Button(mainPanel, -1, "Button 3") 20 … 21 22 # Create a sizer. 23 sizer = wx.GridSizer( tate , yoko , 5, 10) 24 sizer.Add(button1, flag=wx.EXPAND) 25 sizer.Add(button2, flag=wx.EXPAND) 26 sizer.Add(button3, flag=wx.EXPAND) 27 … 28 mainPanel.SetSizer(sizer) 29 30if __name__ == '__main__': 31 app = wx.PySimpleApp() 32 MyFrame().Show(True) 33 app.MainLoop()
「def comp(self):」以下にどのように記述すればいいでしょうか?
python
1mainPanel = wx.Panel(self) 2for i in range( tate * yoko ) : 3 buttoni = wx.Button(mainPanel, -1, "Button " + str(i) ) 4 5sizer = wx.GridSizer( tate , yoko , 5, 10) 6for j in range( tate * yoko ) : 7 sizer.Add(buttonj, flag=wx.EXPAND)
などと考えてみましたが、「NameError: name 'buttonj' is not defined」となり動きません。
ものすごく、簡単なことかもしれませんが、お知恵を貸してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/20 03:46 編集