私はPythonに戻ろうとしていますが、私はオブジェクトを互いにアクセス可能にする前にこの問題を抱えています。この簡単な例では、ボタンとテキストボックスを持つパネルを表示しています。テキストボックスをクリックすると、データベースに照会し、取り出されたデータとともにカーソルを戻す機能が呼び出されます。 LookupSQL関数またはShowClientData関数のどちらかがこの出力をループでテキストボックスに書き込むようにする必要があります。 TextBox(outputBox)は現在、他のどの関数でも不明です。他の機能がそれが何であるかを知るようにするにはどうすればよいですか?あなたはdata attributesと呼ばれている探しているものを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は、それが定義され、自己で呼び出されたときにそれを認識しません。 が NameError:名前が「outputBox」私はグローバルとしてoutputBox宣言してみました、それが働いていたが、私はそれが良い練習 – pickarooney
は私の編集を参照してくださいだかわからない が定義されていない、あなたは自己を経由して、 'outputBox'にアクセスし、そのことを行う必要がありますそれが使われている場所であればどこでも変更できます。 –
はまだエラーが発生しています self.outputBox.WriteText( '%s%s%s%s%s%s%s%s%s%s \ n'%(rChange、rItemType、rPK、rItemCode、rFieldName、rOldValue、rNewValue 、rUpdateDate、rUserName)) NameError:名前 'self'が定義されていません – pickarooney