0

当我按下按钮时,我想将按钮标签打印到 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')
4

1 回答 1

1

你有很多问题。首先,您错误地绑定了第二个按钮。它应该以与第一个相同的方式绑定。因此,将您的绑定代码更改为以下内容:

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

请注意,不再有等号。

接下来在onButton方法中,您需要将数据写入 Excel 文件。Python 的“in”运算符不这样做。它用于测试项目是否在集合中。有关更多信息,请参阅文档

相反,您需要使用 xlwt 的write方法将标签写入单元格。这是一个完整的例子:

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 函数,因为我认为这是一个更好的地方。

于 2013-10-08T13:49:25.700 回答