首页 > 解决方案 > 交互式数据输入应用程序并链接到服务器数据库

问题描述

我正在创建一个交互式员工信息应用程序,它将添加新数据、检索旧数据并更新它。最终我会将此应用程序链接到 SQL 服务器,以将员工信息详细信息添加和更新到员工地址簿表

我虽然得到一个wx.App must be created first!错误

import wx
import os
app=wx.App()

class AddressBook(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"Address Book",size=(520,700))
        self.panel=wx.Panel(self,-1)
        self.SetBackgroundColour("#95CAE4")
       
        self.title=wx.StaticText(self.panel,-1,"ADDRESS BOOK DATABASE",pos=(120,10))
        self.firstname=wx.StaticText(self.panel,-1,"FirstName",pos=(50,50))
        #self.firstname1=wx.TextCtrl(self.panel,-1,"",pos=(160,50),size=(100,20))
        self.secondname=wx.StaticText(self.panel,-1,"SecondName",pos=(35,80))
        #self.secondname1=wx.TextCtrl(self.panel,-1,"",pos=(160,80),size=(100,20))
        self.addressline1=wx.StaticText(self.panel,-1,"Address(Line1)",pos=(30,110))
        self.addressline2=wx.StaticText(self.panel,-1,"Address(Line2)",pos=(30,140))
        self.addressline3=wx.StaticText(self.panel,-1,"Address(Line3)",pos=(30,170))
        self.city=wx.StaticText(self.panel,-1,"City",pos=(85,200))
        self.state=wx.StaticText(self.panel,-1,"State or Province",pos=(20,230))
        self.zip=wx.StaticText(self.panel,-1,"Postal(zip)Code",pos=(25,260))
        self.homephe=wx.StaticText(self.panel,-1,"HomePhone",pos=(40,290))
        self.workphe=wx.StaticText(self.panel,-1,"WorkPhone",pos=(45,320))
        self.mobile=wx.StaticText(self.panel,-1,"Mobile",pos=(70,350))
        self.email=wx.StaticText(self.panel,-1,"Primary Email",pos=(35,380))
        self.email2=wx.StaticText(self.panel,-1,"Secondary Email",pos=(20,410))
        self.notes=wx.StaticText(self.panel,-1,"Notes",pos=(75,440))

        self.firstname1=wx.TextCtrl(self.panel,-1,"",pos=(130,50),size=(170,20))
        self.secondname1=wx.TextCtrl(self.panel,-1,"",pos=(130,80),size=(170,20))
        self.addressline11=wx.TextCtrl(self.panel,-1,"",pos=(130,110),size=(250,20))
        self.addressline21=wx.TextCtrl(self.panel,-1,"",pos=(130,140),size=(250,20))
        self.addressline31=wx.TextCtrl(self.panel,-1,"",pos=(130,170),size=(250,20))
        
        self.city1=wx.TextCtrl(self.panel,-1,"",pos=(130,200),size=(170,20))
        self.state1=wx.TextCtrl(self.panel,-1,"",pos=(130,230),size=(170,20))
        self.zip1=wx.TextCtrl(self.panel,-1,"",pos=(130,260),size=(170,20))
        self.homephe1=wx.TextCtrl(self.panel,-1,"",pos=(130,290),size=(170,20))
        self.workphe1=wx.TextCtrl(self.panel,-1,"",pos=(130,320),size=(170,20))
        self.mobile1=wx.TextCtrl(self.panel,-1,"",pos=(130,350),size=(170,20))
        self.email3=wx.TextCtrl(self.panel,-1,"",pos=(130,380),size=(170,20))
        self.email4=wx.TextCtrl(self.panel,-1,"",pos=(130,410),size=(170,20))
        self.notes1=wx.TextCtrl(self.panel,-1,"",pos=(130,440),size=(250,100),style=wx.TE_MULTILINE)
        self.btn=wx.Button(self.panel,201,"save",pos=(170,570),size=(70,30))
        self.btn1=wx.Button(self.panel,202,"clear all",pos=(80,570),size=(70,30))
        self.btn2=wx.Button(self.panel,203,"retrieve",pos=(260,570),size=(70,30))
        
        self.Bind(wx.EVT_BUTTON,self.retrive,id=203)
        self.Bind(wx.EVT_BUTTON,self.clear,id=202)
        self.Bind(wx.EVT_BUTTON,self.save,id=201)
       
        self.filename="AddressBookDataBase"
        if not os.path.exists(self.filename):
            os.makedirs('AddressBookDataBase')
frame=AddressBook()

app.SetTopWindow(frame)
frame.Centre()
frame.Show()
app.MainLoop()

错误截图

在此处输入图像描述

标签: python-3.xwxpython

解决方案


我只能假设,该错误与您在其下运行的某些 IDE 有关。
如果您从命令行运行它,我猜它会起作用。
传统上,创建 的wx.App()放置在您将开始引用它的位置,并包装到直接调用此代码的测试中。
IE

if __name__ == "__main__":
    app=wx.App()
    frame=AddressBook()
    app.SetTopWindow(frame)
    frame.Centre()
    frame.Show()
    app.MainLoop()

psretrieve不是retrive


推荐阅读