2012-07-04 20 views
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 PHONE1 EMAIL1

名2 PHONE2 EMAIL2

NAME3電話3 EMAIL3

回答

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 
+0

比發生的情況好,但仍然沒有。有了這個,我得到了一點樓梯效果,仍然重疊。我應該注意我的(信息)列表中有大約10個元組。我編輯了我的帖子以顯示我想要獲得的內容 – Isov5

+0

@ Isov5嘗試找到鉛筆和紙張,繪製一些矩形,計算座標並返回代碼;提高你的數學技能 – pinkdawn

+0

嗯,沒有。我手動做了這個相同的過程,它工作正常。它只在我使用迭代時有所不同。而且我無法手動插入這些靜態文本,因爲它假設會動態地拉動和顯示信息。 – Isov5

0

與分級機

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