我在我的主课程中创建了一个面板。然后我想创建一个进入面板的按钮。我为名为panel_in_button的按钮创建了一个单独的类,并在其参数中设置main,希望我可以在我的主类中继承该面板,然后在我的panel_in_button类中使用它,但由于某些奇怪的原因我的按钮不会出现在我的运行程序。程序运行正常,但除此之外。请帮忙。这是我得到的错误,但我不认为它与我无法访问面板有任何关系。
警告(来自警告模块): 文件“C:\ Python27 \ GUI practice.py”,第19行 app = wx.PySimpleApp()#This运行程序 wxPyDeprecationWarning:使用不推荐使用的类PySimpleApp。
import wx
class main(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id, "My window", size=(300, 200))
panel=wx.Panel(self)
class panel_in_button(main):
def __init__(self):
button = wx.Button(main.panel, label="exit",pos=(130,10), size=(60, 60))
self.Bind(wx.EVT_BUTTON, self.closebutton, button)
self.Bind(wx.EVT_CLOSE, self.closewindow)
def closebutton(self, event):
self.Close(True)
def closewindow(self, event):
self.Destroy()
if __name__=="__main__":
app=wx.PySimpleApp() #This runs the program
frame=main(parent=None, id=-1)#Displays the program
frame.Show()
app.MainLoop()
答案 0 :(得分:0)
你无法以这种方式编写代码。 main 是一个类,而不是类的实例。你不应该直接调用一个类的方法。相反,您需要实例化它,然后调用您的对象的方法。不在此代码中的哪个位置实例化 panel_in_button 。无论如何,我不建议用这种方式编程。这是一个清理版本:
import wx
class main(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id, "My window", size=(300, 200))
panel=wx.Panel(self)
button = wx.Button(panel, label="exit",pos=(130,10), size=(60, 60))
self.Bind(wx.EVT_BUTTON, self.closebutton, button)
self.Bind(wx.EVT_CLOSE, self.closewindow)
def closebutton(self, event):
self.Close(True)
def closewindow(self, event):
self.Destroy()
if __name__=="__main__":
app=wx.App(False) #This runs the program
frame=main(parent=None, id=-1)#Displays the program
frame.Show()
app.MainLoop()
这将两个类合并为一个。我还将对 wx.PySimpleApp 的引用替换为不推荐使用的引用。我建议你看一下sizer而不是绝对定位。 Sizer绝对值得学习。