wxpython如何在xlwt中显示按钮标签
我想在按下按钮时将按钮标签打印到excel中,excel文件已创建,但我无法在其中发送任何信息!谁能帮帮我,还是我做错了wxpython如何在xlwt中显示按钮标签,wxpython,xlwt,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 Ex
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')
你有很多问题。首先,您未正确绑定第二个按钮。它应该以与第一个相同的方式绑定。因此,请将绑定代码更改为以下内容:
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()
请注意,我还将save移到了onClose函数,因为我认为这是一个更好的地方。非常感谢,我可以问一些其他问题吗?在相同的代码中,如果我放置一个txtctrl,而不是从按钮(Mem1)获取标签写下另一个名称,当我按下按钮时,会在excel中看到该名称?您是说要从TextCtrl中获取值并将其写入excel文件?如果您这样做了,您只需执行value=self.myTxtCtrl.GetValue()之类的操作,然后像以前一样将其写入您想要的任何单元格