前に質問で、ボタンの数を動的に作成するものをつくりました。
全てのボタンで、クリックしたらその時の日時を追加するとともに、クリック不可にしたいのですが、どう書いたらいいか分かりません。
python
1import wx 2import openpyxl 3import os 4import datetime 5 6tate = input("縦:= ") 7yoko = input("横:= ") 8 9class MyFrame1 ( wx.Frame ): 10 11 def __init__( self, parent ): 12 wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 867,651 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL ) 13 14 self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) 15 16 bSizer1 = wx.BoxSizer( wx.VERTICAL ) 17 18 bSizer1.SetMinSize( wx.Size( -1,30 ) ) 19 m_comboBox1Choices = ["aaa","bbb","ccc"] 20 self.m_comboBox1 = wx.ComboBox( self, wx.ID_ANY, u"Combo!", wx.DefaultPosition, wx.DefaultSize, m_comboBox1Choices, 0 ) 21 bSizer1.Add( self.m_comboBox1, 0, wx.ALL, 5 ) 22 23 bSizer2 = wx.BoxSizer( wx.VERTICAL ) 24 mainPanel = wx.Panel(self) 25 button = [] 26 for i in range( tate * yoko ) : 27 button.append(wx.Button(mainPanel, -1, "Button " + str(i+1) )) 28 sizer = wx.GridSizer( tate , yoko , 5, 10) 29 for j in range( tate * yoko ) : 30 button[j].Bind(wx.EVT_BUTTON, self.button_func) #ボタンを押したときに、button_funcに渡す 31 sizer.Add(button[j],1, flag=wx.EXPAND ) 32 mainPanel.SetSizer(sizer) 33 bSizer2.Add( mainPanel, 1, wx.ALL|wx.EXPAND, 5 ) 34 35 bSizer1.Add( bSizer2, 1, wx.EXPAND, 5 ) 36 37 self.SetSizer( bSizer1 ) 38 self.Layout() 39 40 self.Centre( wx.BOTH ) 41 42 def __del__( self ): 43 pass 44 45 def button_func(event): #ここをどう書いたらいいか分かりません 46 dt_now = datetime.datetime.now() 47 gl = button.GetLabel() 48 self.label.SetLabel(gl + '\n' + dt_now.strftime('%Y年%m月%d日 %H:%M:%S') ) 49 wx.Button.Enable( False ) 50 51if __name__ == '__main__': 52 app = wx.App(False) 53 frame = MyFrame1(None) 54 frame.Show(True) 55 app.MainLoop()
def button_func(event):の書く場所が、ここでいいのか。
ラベルに文字列を追加するには。
ボタンをクリック不可にするには。
クリックしたボタンのIDを調べる方法があれば、そこからいろいろ出来る気がするのですが…
いろいろ調べたのですが、分かりませんでした。ご協力お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。