0

我正在尝试创建一个函数,该函数在调用时使用 statictext 小部件在面板中制定列表。我正在从包含姓名、电话和电子邮件的 sql 表中提取信息。这是我的示例,希望您能看到我正在尝试做的事情。

info = [('name1','phone1','email1'),('name2','phone2','email2'),
('name3','phone3','email3')]

for name,phone,email in info:
    x = 0
    y = 0
    wx.StaticText(self.Panel,-1,str(name),pos=(10+x,40+y))
    wx.StaticText(self.Panel,-1,str(phone),pos=(100+x,40+y))
    wx.StaticText(self.Panel,-1,str(email),pos=(190+x,40+y))
    x = x + 90
    y = y + 30

现在我认为这会起作用。我错过了什么,忽略了什么?发生的事情是很多信息没有显示出来,但你可以看到它在某个地方被剪辑在一起,单词相互重叠。

试图达到这个效果:

姓名 1 电话 1 电子邮件 1

姓名 2 电话 2 电子邮件 2

姓名3 电话3 电子邮件3

4

2 回答 2

0

用sizer试试

import wx

info = [('name1','phone1','email1'),('name2','phone2','email2'),
('name3','phone3','email3')]

class Frame(wx.Frame):
    def __init__(self,*args,**kwargs):
        wx.Frame.__init__(self,*args,**kwargs)
        panel= wx.Panel(self)
        sizer= wx.BoxSizer(wx.VERTICAL)

        grid_sizer= wx.GridSizer(len(info),3,5,5)
        for person in info:
            for detail in person:
                text= wx.StaticText(panel,label=detail)
                grid_sizer.Add(text)
        sizer.Add(grid_sizer,0,wx.EXPAND|wx.ALL,10)

        panel.SetSizer(sizer)

        self.Show()

class App(wx.App):
    def OnInit(self):
       Frame(None)
       return True

if __name__ == "__main__":
    app= App(False)
    app.MainLoop()
于 2012-07-04T08:23:36.867 回答
0

尝试这个

x = 0
y = 0
for name, phone, email in info:        
    wx.StaticText(self.Panel, -1, str(name),  pos=(10+x,40+y))
    wx.StaticText(self.Panel, -1, str(phone), pos=(100+x,40+y))
    wx.StaticText(self.Panel, -1, str(email), pos=(190+x,40+y))

    y = y + 30
于 2012-07-04T06:53:08.687 回答