2013-10-08 3 views
0

버튼을 누르면 버튼 레이블을 인쇄하고 싶습니다. Excel 파일이 생성되었지만 그 안에 정보가 없습니다. 나를 도울 수 있습니까? 잘못된?wxpython xlwt에 버튼 레이블을 표시하는 방법

import wx 
from xlwt import * 

w = Workbook() 
ws1 = w.add_sheet('sheet 1') 

class MyFrame(wx.Frame): 

    def __init__(self,parent,id): 
     wx.Frame.__init__(self,parent,id,'Button to Excel', size = (300,300)) 
     panel=wx.Panel(self) 

     extBtn = wx.Button(panel, label="Exit",pos=(100,150)) 
     extBtn.Bind(wx.EVT_BUTTON, self.onClose) 

     btn = wx.Button(panel,label = "Mem 1",pos=(100,100)) 
     btn.Bind =(wx.EVT_BUTTON,self.onButton) 

    def onClose(self, event): 
     self.Close() 

    def onButton(self,event): 
     print self.GetLabel() in ws1 

if __name__ == '__main__': 
    app=wx.PySimpleApp() 
    frame=MyFrame(parent=None,id=-1) 
    frame.Show() 
    app.MainLoop() 
    w.save('a.xls') 

답변

1

많은 문제가 있습니다. 먼저 두 번째 단추를 잘못 바인딩합니다. 첫 번째 방법과 동일한 방식으로 바인딩되어야합니다. 바인딩 코드를 다음과 같이 변경하십시오.

btn.Bind(wx.EVT_BUTTON, self.onButton) 

더 이상 등호가 없습니다.

메서드의 다음으로 Excel 파일에 데이터를 써야합니다. 파이썬의 "in"연산자는 그렇게하지 않습니다. 항목이 컬렉션에 있는지 여부를 테스트하는 데 사용됩니다. 자세한 내용은 docs을 참조하십시오.

대신 xlwt의 쓰기 메서드를 사용하여 레이블을 셀에 쓰고 싶을 것입니다. 나는 또한 내가 그 그것을 위해 더 나은 곳으로 생각으로는으로 onClose 기능에 저장할 이동 한

import wx 
from xlwt import * 

w = Workbook() 
ws1 = w.add_sheet('sheet 1') 

class MyFrame(wx.Frame): 

    def __init__(self,parent,id): 
     wx.Frame.__init__(self,parent,id,'Button to Excel', size = (300,300)) 
     panel=wx.Panel(self) 

     extBtn = wx.Button(panel, label="Exit",pos=(100,150)) 
     extBtn.Bind(wx.EVT_BUTTON, self.onClose) 

     btn = wx.Button(panel,label = "Mem 1",pos=(100,100)) 
     btn.Bind(wx.EVT_BUTTON, self.onButton) 

    def onClose(self, event): 
     w.save('a.xls') 
     self.Close() 

    def onButton(self,event): 
     btn = event.GetEventObject() 
     lbl = btn.GetLabel() 
     ws1.write(0, 0, lbl) 


if __name__ == '__main__': 
    app=wx.PySimpleApp() 
    frame=MyFrame(parent=None,id=-1) 
    frame.Show() 
    app.MainLoop() 

참고 : 여기에 완벽한 예입니다.

+0

대단히 고마워요. 같은 코드에서 txtctrl을 넣고 단추 (Mem1)의 레이블을 가져 오면 다른 이름을 쓰고 단추를 누르면 Excel에 이름이 표시됩니까? – pap

+0

TextCtrl에서 값을 가져 와서 Excel 파일에 쓰고 싶다고 하시겠습니까? 그렇게했다면, value = self.myTxtCtrl.GetValue()와 같은 것을하고, 전에 쓰고 싶은 셀에 쓸 것입니다. –

+0

다시 한번 고맙습니다. 지금은 작동 중입니다. – pap

관련 문제