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, так как считаю, что это лучшее место для этого.

Другие вопросы по тегам