0

最初の Python GUI で列見出しを複製したいと思います。私は次のことを試しました

    bfont = wx.Font(10,wx.DEFAULT,wx.NORMAL,wx.BOLD)
    angle = wx.StaticText(panel,label="Angle")
    angle.SetFont(bfont)
    count_c = wx.StaticText(panel,label="Counts (C)")
    count_c.SetFont(bfont)
    count_u = wx.StaticText(panel,label="Counts (U)")
    count_u.SetFont(bfont)

    fgs.AddMany([(angle),(count_c), (count_u),
                 (angle),(count_c), (count_u)])


    vbox.Add(fgs, proportion=1,flag=wx.ALL|wx.EXPAND,border=5)

ただし、これは2番目のヘッダーセットのみを表示します。これはどのように行うことができますか?

4

1 に答える 1

1

同じウィジェットを 2 つの異なる場所に追加することはできません。代わりに、行ごとに個別のウィジェットを作成する必要があります。各行で同じことが必要なため、ループを使用できます。

import wx

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

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)
        bfont = wx.Font(10,wx.DEFAULT,wx.NORMAL,wx.BOLD)

        vbox = wx.BoxSizer(wx.VERTICAL)
        fgs = wx.FlexGridSizer(rows=2, cols=3, vgap=5, hgap=5)

        # add two rows of widgets to the sizer
        widgets = []
        for i in range(2):
            angle = wx.StaticText(self,label="Angle")
            angle.SetFont(bfont)
            widgets.append(angle)

            count_c = wx.StaticText(self,label="Counts (C)")
            count_c.SetFont(bfont)
            widgets.append(count_c)

            count_u = wx.StaticText(self,label="Counts (U)")
            count_u.SetFont(bfont)
            widgets.append(count_u)

        fgs.AddMany(widgets)
        vbox.Add(fgs, proportion=1,flag=wx.ALL|wx.EXPAND,border=5)
        self.SetSizer(vbox)

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

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Test")
        panel = MyPanel(self)
        self.Show()

if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()
于 2013-07-25T18:10:42.360 に答える