wxpython как отобразить метку кнопки в xlwt
Я хочу напечатать ярлык кнопок в Excel, когда я нажимаю кнопку, файл Excel создан, но я не могу отправить в него какую-либо информацию! Может ли кто-то мне помочь или я все делаю неправильно?
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)
Обратите внимание, что знака равенства больше нет.
Далее в методе onButton вам нужно записать данные в файл Excel. Оператор Python "in" этого не делает. Он используется для проверки, находится ли элемент в коллекции или нет. Смотрите документы для получения дополнительной информации.
Вместо этого вы захотите использовать метод записи 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):
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()
Обратите внимание, что я также перенес сохранение в функцию onClose, так как считаю, что это лучшее место для этого.