wxpython在FlexGridSizer.AddMany

2024-10-04 01:34:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的第一个pythongui中复制列标题。我试过以下方法

    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)

但是这只显示了第二组标题。如何做到这一点?在


Tags: 方法default标题countlabelwxfontpanel
1条回答
网友
1楼 · 发布于 2024-10-04 01:34:07

不能将同一个小部件添加到两个不同的位置。相反,您必须为每一行创建单独的小部件。因为每行都需要相同的内容,所以可以使用循环:

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()

相关问题 更多 >