wxPython如何重新加载数据

xhp168168 2016-09-22 02:28:56

我使用wxPython开发了一个应用程序,使用Notebook做了两个页面,分别为“显示数据”和“修改数据”。作用是进入程序后,在“显示数据”页面的列表框中,显示从数据库里示获得的datalist,如果我在“修改数据”页面对数据库的datalist进行了修改后,需要关闭该软件,重新打开软件后,才会在“显示数据”界面显示我刚才修改了的数据。现在的问题是:如何在修改了数据之后,点击进入了“显示数据”页面后,自动显示刚才修改了的数据?因为觉得先关闭软件再开启觉得很麻烦,也不符合用户习惯。
我的想法是每次进入“显示数据”页面,重新加载一次ConnectDB()函数以获得最新的数据,我尝试了在cjlists函数中调用ConnectDB()函数,但一直未达到理想效果,请高手指导。

程序代码框架如下:


[code=python][/
import wx

class ConnectDB():
global datalist
#Connect DB and get datalist for Show data page.
pass

class cjlists(wx.Panel):
global datalist
def __init__(self,parent):
wx.Panel.__init__(self,parent)
self.listBox = wx.ListBox(self,-1,(20,20),(80,100),‘’,wx.LB_SINGLE)

class cjModify(wx.Panel):
def __init__(self,parent):
wx.Panel.__init__(self,parent)
wx.StaticText(self,-1,'Modify Data in this page.',pos=(30,30))
pass

if __name__=='__main__':
app = wx.App(False)
frame = wx.Frame(None,title='How to auto reload data?',size=(300,200))
nb = wx.Notebook(frame)
nb.AddPage(cjlists(nb),'Show Data')
nb.AddPage(cjModify(nb),'Modify Data')
frame.Show()
app.MainLoop()

code]


...全文
789 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sprawling 2016-10-24
  • 打赏
  • 举报
回复
try this, you can do more
class ConnectDB():
    global datalist
    #Connect DB and get datalist for Show data page.
    pass

class cjlists(wx.Panel):
    global datalist
    def __init__(self,parent):
        wx.Panel.__init__(self,parent)
        self.listBox = wx.ListBox(self,-1,(20,20),(80,100),'hello',wx.LB_SINGLE)

class cjModify(wx.Panel):
    def __init__(self,parent):
        wx.Panel.__init__(self,parent)
        wx.StaticText(self,-1,'Modify Data in this page.',pos=(30,30))
        pass
        
def ChangedTab(event):
    event.Skip()
    index = nb.GetSelection()
    print index
    if index == 1: # second page
        print "you can modify the data"
    else:                               # other pages
        print "do what you want"
        p0.listBox.SetString(0, "aaaa")
    
if __name__=='__main__':
    app = wx.App(False)
    frame = wx.Frame(None,title='How to auto reload data?',size=(300,200))
    nb = wx.Notebook(frame)
    p0 = cjlists(nb)
    p1 = cjModify(nb)
    nb.AddPage(p0,'Show Data')
    nb.AddPage(p1,'Modify Data')
    nb.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,ChangedTab)
    frame.Show()
    app.MainLoop()
xhp168168 2016-10-12
  • 打赏
  • 举报
回复
自己顶一下。。。
xhp168168 2016-09-27
  • 打赏
  • 举报
回复 1
程序运行界面如下图:

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧