0
self.btid = 0
self.btarray = [] 
self.btarray.append("x")#so that the buttons are appended according to their ids


self.bmt = wx.BitmapButton(panel, btid, pic, pos=(50,50))
self.btarray.append(self.bmt)

self.btid += 1

同じコードを使用して複数のボタンを作成します。後で個々のボタンの ID を取得するにはどうすればよいですか?

前もってありがとう、スワヤム

4

2 に答える 2

1

GetIdオブジェクトのIDを取得するメソッドです。したがって、次のように書くことができます。

id_of_button_n = button_n.GetId()

ただし、あなたの場合、IDを辞書のキーとしてすでに保存しているため、これは必要ありませんself.btarray!

于 2013-03-10T07:09:50.290 に答える
0

これは、ボタンの ID とラベルを取得する方法を示す手っ取り早いスクリプトです。スタックにビットマップ ボタンの画像を含める良い方法がないため、通常の wx.Button オブジェクトを使用しています。

import random
import wx

########################################################################
class MyPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)
        mainSizer = wx.BoxSizer(wx.VERTICAL)

        i = random.choice(range(5, 10))
        for index, item in enumerate(range(i)):
            num = index + 1
            btn = wx.Button(self, label="Button %s" % num)
            btn.Bind(wx.EVT_BUTTON, self.onClick)
            mainSizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)

        self.SetSizer(mainSizer)

    #----------------------------------------------------------------------
    def onClick(self, event):
        """"""
        btn = event.GetEventObject()
        print "%s id => %s" % (btn.GetLabel(), btn.GetId())

########################################################################
class MainFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Random Buttons", size=(1024, 768))
        panel = MyPanel(self)
        self.Show()

if __name__ == "__main__":
    app = wx.App(False)
    frame = MainFrame()
    app.MainLoop()
于 2013-03-13T19:10:18.840 に答える