我使用 wxPython 创建了一个 GUI,当我 运行 我的应用程序时,这些功能没有执行
I've created a GUI using wxPython and the functions aren't executed when I run my app
我正在使用 python 2.7,我正在使用 wxPython
为特定的文本编辑器创建 GUI。
我已经为 运行 我的程序创建了这两个脚本:gui.py 和 app1.py 和我'我们将它们都放在一个文件夹中。
问题是,一旦我运行 app1.py,它就完美地打开了GUI..
但是当我按下按钮时,我插入 app1.py 的命令不会执行。甚至在终端中也不会像简单的 print ()..
我正在使用 Python“2.7.9”
我可以运行 导入wx
我的 wx.__version__ 是“3.0.2.0”
那么,我的代码有什么问题?
是不是继承概念问题?
我应该使用 super()
来解决这个问题吗?如果是这样,我应该如何使用它?
The gui.py code:
# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
###########################################################################
## Class MainFrame
###########################################################################
class MainFrame ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Editor_SPED_LP", pos = wx.DefaultPosition, size = wx.Size( 320,231 ), style = wx.DEFAULT_FRAME_STYLE|wx.SYSTEM_MENU|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.Size( -1,-1 ), wx.Size( -1,-1 ) )
bSizer1 = wx.BoxSizer( wx.VERTICAL )
self.m_textBox = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_READONLY )
bSizer1.Add( self.m_textBox, 0, wx.ALL|wx.EXPAND, 5 )
self.m_btn_abrirArq = wx.Button( self, wx.ID_ANY, u"Abrir arquivo...", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_btn_abrirArq, 0, wx.ALL, 5 )
self.m_btn_editarTxt = wx.Button( self, wx.ID_ANY, u"Editar .txt", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_btn_editarTxt, 0, wx.ALL, 5 )
self.m_gauge1 = wx.Gauge( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL )
self.m_gauge1.SetValue( 0 )
bSizer1.Add( self.m_gauge1, 0, wx.ALL, 5 )
self.m_textoProgresso = wx.StaticText( self, wx.ID_ANY, u"Aguardando arquivo..", wx.Point( -1,-1 ), wx.DefaultSize, wx.ALIGN_CENTRE )
self.m_textoProgresso.Wrap( -1 )
bSizer1.Add( self.m_textoProgresso, 0, wx.ALL, 5 )
self.m_btn_ajuda = wx.Button( self, wx.ID_ANY, u"Ajuda", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_btn_ajuda, 0, wx.ALL, 5 )
self.SetSizer( bSizer1 )
self.Layout()
self.Centre( wx.BOTH )
# Connect Events
self.m_btn_abrirArq.Bind( wx.EVT_BUTTON, self.abrirArquivo )
self.m_btn_editarTxt.Bind( wx.EVT_BUTTON, self.editarTxt )
self.m_btn_ajuda.Bind( wx.EVT_BUTTON, self.janelaAjuda )
def __del__( self ):
pass
# Virtual event handlers, overide them in your derived class
def abrirArquivo( self, event ):
event.Skip()
def editarTxt( self, event ):
event.Skip()
def janelaAjuda( self, event ):
event.Skip()
The app1.py code:
# -*- coding: utf-8 -*-
#importing wx files
import wx
#import the newly created GUI file
import gui
#inherit from the MainFrame created in wxFormBuilder and create MyFrame
class MyFrame(gui.MainFrame):
#constructor
def __init__(self, parent):
#initialize parent class
gui.MainFrame.__init__(self, parent)
#handlers for MyFrame_MainFrame events
def abrirArquivo(self, event):
try:
#abrir fileDialog box
openFileDialog = wx.FileDialog(self, "Open", "", "", "Text files (*.txt)|*.txt", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
openFileDialog.ShowModal()
#salvar o caminho para o arquivo
filepath = openFileDialog.GetPath()
#alterar a textbox para "arquivo encontrado"
TextCtrl.SetValue(self, "teste")
StaticText.SetValue(self, u"Arquivo encontrado..")
except Exception:
print "erro_abrir_arquivo"
def editarTxt(self, event):
try:
#editar texto
dial = wx.MessageDialog(None, "TESTE", 'Ajuda - Editor SPED', wx.OK)
dial.ShowModal()
dial.Destroy()
except Exception:
print "erro_editar_txt"
def janelaAjuda( self, event):
try:
#mostrar janela de ajuda
dial = wx.MessageDialog(None, "'1 - Apertar o botao 'escolher arquivo' \n2 - Selecionar o .txt do SPED da L.P.\n3 - Aguarde o processamento..\n4 - O arquivo editado sera salvo na mesma pasta do arquivo selecionado\n5 - Fim'", 'Ajuda - Editor SPED', wx.OK)
dial.ShowModal()
dial.Destroy()
except Exception:
print "erro_jan_ajuda"
# run the app and render-it continuously
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None)
self.SetTopWindow(self.frame)
self.frame.Show(True)
print("wxApp criado com sucesso.")
return True
if __name__ == "__main__":
# do not redirect stdout to the gui
app = MyApp(redirect=False)
# render gui continuously
app.MainLoop()
对于日志:
正如我在评论中提到的,我将这两个文件复制到一个空文件夹中,当我单击它们时,按钮似乎功能齐全,我在控制台中得到文本,一个文件选择器 window,一个消息框。
要开始检查 wx
的任何安装问题,请检查
import wx
print wx.__version__
如果它 returns 是您的 wxPython 安装的版本号。
很高兴您可以通过复制到一个普通的新文件夹来解决这个问题,也许发生了一些导入或文件名混淆,因为它现在似乎可以单独处理这两个文件。
我正在使用 python 2.7,我正在使用 wxPython
为特定的文本编辑器创建 GUI。
我已经为 运行 我的程序创建了这两个脚本:gui.py 和 app1.py 和我'我们将它们都放在一个文件夹中。
问题是,一旦我运行 app1.py,它就完美地打开了GUI.. 但是当我按下按钮时,我插入 app1.py 的命令不会执行。甚至在终端中也不会像简单的 print ()..
我正在使用 Python“2.7.9”
我可以运行 导入wx
我的 wx.__version__ 是“3.0.2.0”
那么,我的代码有什么问题?
是不是继承概念问题?
我应该使用 super()
来解决这个问题吗?如果是这样,我应该如何使用它?
The gui.py code:
# -*- coding: utf-8 -*-
###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc
###########################################################################
## Class MainFrame
###########################################################################
class MainFrame ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Editor_SPED_LP", pos = wx.DefaultPosition, size = wx.Size( 320,231 ), style = wx.DEFAULT_FRAME_STYLE|wx.SYSTEM_MENU|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.Size( -1,-1 ), wx.Size( -1,-1 ) )
bSizer1 = wx.BoxSizer( wx.VERTICAL )
self.m_textBox = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_LEFT|wx.TE_READONLY )
bSizer1.Add( self.m_textBox, 0, wx.ALL|wx.EXPAND, 5 )
self.m_btn_abrirArq = wx.Button( self, wx.ID_ANY, u"Abrir arquivo...", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_btn_abrirArq, 0, wx.ALL, 5 )
self.m_btn_editarTxt = wx.Button( self, wx.ID_ANY, u"Editar .txt", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_btn_editarTxt, 0, wx.ALL, 5 )
self.m_gauge1 = wx.Gauge( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL )
self.m_gauge1.SetValue( 0 )
bSizer1.Add( self.m_gauge1, 0, wx.ALL, 5 )
self.m_textoProgresso = wx.StaticText( self, wx.ID_ANY, u"Aguardando arquivo..", wx.Point( -1,-1 ), wx.DefaultSize, wx.ALIGN_CENTRE )
self.m_textoProgresso.Wrap( -1 )
bSizer1.Add( self.m_textoProgresso, 0, wx.ALL, 5 )
self.m_btn_ajuda = wx.Button( self, wx.ID_ANY, u"Ajuda", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_btn_ajuda, 0, wx.ALL, 5 )
self.SetSizer( bSizer1 )
self.Layout()
self.Centre( wx.BOTH )
# Connect Events
self.m_btn_abrirArq.Bind( wx.EVT_BUTTON, self.abrirArquivo )
self.m_btn_editarTxt.Bind( wx.EVT_BUTTON, self.editarTxt )
self.m_btn_ajuda.Bind( wx.EVT_BUTTON, self.janelaAjuda )
def __del__( self ):
pass
# Virtual event handlers, overide them in your derived class
def abrirArquivo( self, event ):
event.Skip()
def editarTxt( self, event ):
event.Skip()
def janelaAjuda( self, event ):
event.Skip()
The app1.py code:
# -*- coding: utf-8 -*-
#importing wx files
import wx
#import the newly created GUI file
import gui
#inherit from the MainFrame created in wxFormBuilder and create MyFrame
class MyFrame(gui.MainFrame):
#constructor
def __init__(self, parent):
#initialize parent class
gui.MainFrame.__init__(self, parent)
#handlers for MyFrame_MainFrame events
def abrirArquivo(self, event):
try:
#abrir fileDialog box
openFileDialog = wx.FileDialog(self, "Open", "", "", "Text files (*.txt)|*.txt", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
openFileDialog.ShowModal()
#salvar o caminho para o arquivo
filepath = openFileDialog.GetPath()
#alterar a textbox para "arquivo encontrado"
TextCtrl.SetValue(self, "teste")
StaticText.SetValue(self, u"Arquivo encontrado..")
except Exception:
print "erro_abrir_arquivo"
def editarTxt(self, event):
try:
#editar texto
dial = wx.MessageDialog(None, "TESTE", 'Ajuda - Editor SPED', wx.OK)
dial.ShowModal()
dial.Destroy()
except Exception:
print "erro_editar_txt"
def janelaAjuda( self, event):
try:
#mostrar janela de ajuda
dial = wx.MessageDialog(None, "'1 - Apertar o botao 'escolher arquivo' \n2 - Selecionar o .txt do SPED da L.P.\n3 - Aguarde o processamento..\n4 - O arquivo editado sera salvo na mesma pasta do arquivo selecionado\n5 - Fim'", 'Ajuda - Editor SPED', wx.OK)
dial.ShowModal()
dial.Destroy()
except Exception:
print "erro_jan_ajuda"
# run the app and render-it continuously
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None)
self.SetTopWindow(self.frame)
self.frame.Show(True)
print("wxApp criado com sucesso.")
return True
if __name__ == "__main__":
# do not redirect stdout to the gui
app = MyApp(redirect=False)
# render gui continuously
app.MainLoop()
对于日志:
正如我在评论中提到的,我将这两个文件复制到一个空文件夹中,当我单击它们时,按钮似乎功能齐全,我在控制台中得到文本,一个文件选择器 window,一个消息框。
要开始检查 wx
的任何安装问题,请检查
import wx
print wx.__version__
如果它 returns 是您的 wxPython 安装的版本号。
很高兴您可以通过复制到一个普通的新文件夹来解决这个问题,也许发生了一些导入或文件名混淆,因为它现在似乎可以单独处理这两个文件。