저는 파이썬으로 돌아가려고 노력하고 있습니다. 이전에이 객체에 접근 할 수있게 해 놓았던이 문제에 다시 한번 매달 렸습니다. 이 간단한 예제에서는 버튼과 텍스트 상자가있는 패널을 표시하고 있습니다. 텍스트 상자를 클릭하면 데이터베이스를 쿼리하고 검색된 데이터와 함께 커서를 반환하는 함수가 호출됩니다. LookupSQL 함수 또는 ShowClientData 함수 중 하나가이 출력을 텍스트 상자에 루프로 쓸 수 있도록해야합니다. TextBox (outputBox)는 현재 다른 모든 함수에서 알 수 없습니다. 다른 기능이 무엇인지 알 수 있도록 어떻게 만들 수 있습니까?wxPython : 출력 상자에 SQL 명령 결과를 입력하십시오.
import wx
import pypyodbc
conn = pypyodbc.connect(driver='{SQL Server}', server='.', database='TheDB', uid='sa', pwd='Pass')
class Audit(wx.Frame):
def __init__(self, *args, **kwargs):
super(Example, self).__init__(*args, **kwargs)
self.InitUI()
def InitUI(self):
panel = wx.Panel(self)
hbox = wx.BoxSizer()
sizer = wx.GridSizer(6,1,2,2)
btn1 = wx.Button(panel, label='Clients')
outputBox = wx.TextCtrl(panel, -1, style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
sizer.AddMany([btn1, btn2, btn3, btn4, btn5, btn6])
hbox.Add(sizer, 0, wx.ALL, 15)
hbox.Add(outputBox, 1, wx.EXPAND)
panel.SetSizer(hbox)
btn1.Bind(wx.EVT_BUTTON, self.ShowClientData)
self.SetSize((800, 600))
self.SetTitle('Audit View')
self.Centre()
self.Show(True)
def ShowClientData(self, event):
SQL = 'select * from V_UpdatedClient'
recursor = lookupSQL(SQL)
for row in recursor:
rChange = row[0]
rItemType = row[1]
rPK = row[2]
rItemCode = row[3]
rFieldName = row[4]
rOldValue = row[5]
rNewValue = row[6]
rUpdateDate = row[7]
rUserName = row[8]
print('%s %s %s %s %s %s %s %s %s' % (rChange, rItemType, rPK, rItemCode, rFieldName, rOldValue, rNewValue, rUpdateDate, rUserName))
def lookupSQL(SQLString):
cursor = conn.cursor()
cursor.execute(SQLString)
return cursor
cursor.close()
def main():
ex = wx.App()
Audit(None)
ex.MainLoop()
if __name__ == '__main__':
main()
ShowClientData는 self로 정의되고 호출 될 때 여전히 인식하지 못합니다. 나가서 설명하자면 NameError : 이름이 'outputBox은' 내가 세계로 outputBox 선언 시도 정의, 그리고 그 일을,하지만 난 내 편집, 당신은 자기를 통해'outputBox'에 액세스해야보기 좋습니다 – pickarooney
확실하지 않다, 그래서 있는지 확인되지 사용되는 곳마다 변경하십시오. –
은 여전히 오류가 발생합니다. self.outputBox.WriteText ('% s % s % s % s % s % s % s % s % s % s % n'% (rChange, rItemType, rPK, rItemCode, rFieldName, rOldValue, rNewValue , rUpdateDate, rUserName)) NameError : name 'self'가 정의되지 않았습니다. LookupSQL이 자체로 정의되어 있지 않기 때문에 – pickarooney