저는 매우 간단한 wxpython GUI를 개발하려고합니다. 현재 텍스트 콘트롤 박스 밑에 파일 다이얼로그 &을 여는 버튼이 있습니다. 지금은 텍스트 컨트롤 상자에 열린 파일 이름을 인쇄하지만 오류 메시지가 계속 표시됩니다. "전역 이름이 정의되지 않았습니다". 어떤 도움을 주시면 감사하겠습니다!파이썬 wxpython 글로벌 이름이 정의되지 않았습니다.
당신은 onOpenFile()
방법 text
를 참조하지만, 그 방법을 정의하지 않습니다
#!/usr/bin/python
import os
import wx
import wx.lib.agw.multidirdialog as MDD
wildcard = "Python source (*.py)|*.py|" \
"All files (*.*)|*.*"
########################################################################
class MyFrame(wx.Frame):
#----------------------------------------------------------------------
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY)
panel = wx.Panel(self, wx.ID_ANY)
self.currentDirectory = os.getcwd()
text = wx.TextCtrl(panel, -1, "",style=wx.TE_MULTILINE|wx.HSCROLL)
# create the buttons and bindings
openFileDlgBtn = wx.Button(panel, label="Show OPEN FileDialog")
openFileDlgBtn.Bind(wx.EVT_BUTTON, self.onOpenFile)
# put the buttons in a sizer
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(openFileDlgBtn, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(text, 1, wx.EXPAND|wx.ALL, 5)
panel.SetSizer(sizer)
#----------------------------------------------------------------------
def onOpenFile(self, event):
"""
Create and show the Open FileDialog
"""
dlg = wx.FileDialog(
self, message="Choose a file",
defaultDir=self.currentDirectory,
defaultFile="",
wildcard=wildcard,
style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR
)
if dlg.ShowModal() == wx.ID_OK:
paths = dlg.GetPaths()
print "You chose the following file(s):"
for path in paths:
print path
text.AppendText('path')
dlg.Destroy()
#----------------------------------------------------------------------
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
frame.Show()
app.MainLoop()
이 가득 *를 기입하십시오 오류 메시지를 포함한 * 추적. 여기에 게시 한 내용만으로는 문제를 진단하기에 충분하지 않습니다. –
프로그래밍에 익숙하지 않아 전체 추적을 다시 수행하는 방법을 알지 못합니다 .--) 문제가되는 코드는 text.AppendText ('path')입니다. 이전에는 변수 "path"를 콘솔을 사용하여 제대로 작동하는지 확인하고, 이제 해당 변수를 텍스트 컨트롤 위젯에 인쇄하고 싶지만 콘솔 창에 오류가 표시되도록 계속합니다. –
파이썬에서 오류가 발생하면 추적 오류가있는 전체 오류 메시지가 인쇄됩니다. 특별한 일은 할 필요가 없습니다. 그것은 하단에'global name ... not defined' 예외 메시지를 포함합니다. –