添加变量以显示wxpython框架中的任何文本
所以,我在学校学习python,作为我当前项目的一部分,我希望能够在屏幕上制作小的“弹出窗口”。我选择用wxpython来做这个,但我遇到了一个问题。现在我找不到添加变量的方法,所以我可以打印任何我想要的内容。我尝试在类和init函数中添加一个额外的变量,但都出现了错误。我不习惯上课,也不习惯上课的方式,我真的很想得到一些帮助。以下是我正在使用的代码:添加变量以显示wxpython框架中的任何文本,python,python-3.x,wxpython,Python,Python 3.x,Wxpython,所以,我在学校学习python,作为我当前项目的一部分,我希望能够在屏幕上制作小的“弹出窗口”。我选择用wxpython来做这个,但我遇到了一个问题。现在我找不到添加变量的方法,所以我可以打印任何我想要的内容。我尝试在类和init函数中添加一个额外的变量,但都出现了错误。我不习惯上课,也不习惯上课的方式,我真的很想得到一些帮助。以下是我正在使用的代码: import wx class HelloFrame(wx.Frame): def __init__(self, *args, **k
import wx
class HelloFrame(wx.Frame):
def __init__(self, *args, **kw):
super(HelloFrame, self).__init__(*args, **kw)
pnl = wx.Panel(self)
st = wx.StaticText(pnl, label = "Betting")
font = st.GetFont()
font.PointSize += 10
font = font.Bold()
st.SetFont(font)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(st, wx.SizerFlags().Border(wx.TOP|wx.LEFT, 25))
pnl.SetSizer(sizer)
self.makeMenuBar()
self.CreateStatusBar()
self.SetStatusText("Welcome to wxPython!")
def makeMenuBar(self):
fileMenu = wx.Menu()
helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H",
"Help string shown in status bar for this menu item")
fileMenu.AppendSeparator()
exitItem = fileMenu.Append(wx.ID_EXIT)
helpMenu = wx.Menu()
aboutItem = helpMenu.Append(wx.ID_ABOUT)
menuBar = wx.MenuBar()
menuBar.Append(fileMenu, "&file")
menuBar.Append(helpMenu, "&help")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnHello, helloItem)
self.Bind(wx.EVT_MENU, self.OnExit, exitItem)
self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem)
def OnExit(self, event):
self.Close(True)
def OnHello(self, event):
wx.MessageBox("Hello again from wxPython")
def OnAbout(self, event):
wx.MessageBox("This is a wxPython Hello World Sample", "About Hello World 2", wx.OK|wx.ICON_INFORMATION)
if __name__ == '__main__':
x = number()
app = wx.App()
frm = HelloFrame(None, title='Betting predictions')
frm.Show()
app.MainLoop()
现在我希望能够将任何内容作为标签输入到st=wx.StaticText(pnl,label=“Betting”)
而不是仅仅“打赌”,让它显示我想要的任何文本,但为了我的生命,我无法理解它。这是我项目中相对较小的一部分,因为我已经完成并有一些额外的时间,但我真的很想让它工作。您可以通过调用静态文本上的SetLabel成员函数来更改标签。现在您正在创建st作为函数init的局部变量。您需要将其作为一个实例变量,如下所示:
class HelloFrame(wx.Frame):
def __init__(self, *args, **kw):
super(HelloFrame, self).__init__(*args, **kw)
pnl = wx.Panel(self)
self.st = wx.StaticText(pnl, label = "Betting")
[...]
# then everywhere you use it, use self.st to access it like this:
self.st.SetFont(font)
如果要更改标签,例如在选择菜单项后:
def OnHello(self, event):
wx.MessageBox("Hello again from wxPython")
self.st.SetLabel("Changed label")
或者,如果要在构造窗口时设置文本,可以将参数传递给函数(构造函数):
可以通过对静态文本调用SetLabel成员函数来更改标签。现在您正在创建st作为函数init的局部变量。您需要将其作为一个实例变量,如下所示:
class HelloFrame(wx.Frame):
def __init__(self, *args, **kw):
super(HelloFrame, self).__init__(*args, **kw)
pnl = wx.Panel(self)
self.st = wx.StaticText(pnl, label = "Betting")
[...]
# then everywhere you use it, use self.st to access it like this:
self.st.SetFont(font)
如果要更改标签,例如在选择菜单项后:
def OnHello(self, event):
wx.MessageBox("Hello again from wxPython")
self.st.SetLabel("Changed label")
或者,如果要在构造窗口时设置文本,可以将参数传递给函数(构造函数):
@Petr Blahos的
实例变量付诸实施。
请注意,self.st.SetLabel()
是在MessageBox
之前应用的,或者在取消消息之前,标签不会更新self.mycount
也声明为实例变量
import wx
class HelloFrame(wx.Frame):
def __init__(self, *args, **kw):
super(HelloFrame, self).__init__(*args, **kw)
pnl = wx.Panel(self)
self.st = wx.StaticText(pnl, label = "Betting")
font = self.st.GetFont()
font.PointSize += 10
font = font.Bold()
self.st.SetFont(font)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.st, wx.SizerFlags().Border(wx.TOP|wx.LEFT, 25))
pnl.SetSizer(sizer)
self.makeMenuBar()
self.CreateStatusBar()
self.SetStatusText("Welcome to wxPython!")
self.mycount = 0
# Show Frame and initially call OnHello (use None to compensate for a lack of event)
self.Show()
self.OnHello(None)
def makeMenuBar(self):
fileMenu = wx.Menu()
helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H",
"Help string shown in status bar for this menu item")
fileMenu.AppendSeparator()
exitItem = fileMenu.Append(wx.ID_EXIT)
helpMenu = wx.Menu()
aboutItem = helpMenu.Append(wx.ID_ABOUT)
menuBar = wx.MenuBar()
menuBar.Append(fileMenu, "&file")
menuBar.Append(helpMenu, "&help")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnHello, helloItem)
self.Bind(wx.EVT_MENU, self.OnExit, exitItem)
self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem)
def OnExit(self, event):
self.Close(True)
def OnHello(self, event):
self.mycount += 1
mystring = "Betting Display No: " + str(self.mycount)
self.st.SetLabel(mystring)
wx.MessageBox("Hello again from wxPython")
def OnAbout(self, event):
wx.MessageBox("This is a wxPython Hello World Sample", "About Hello World 2", wx.OK|wx.ICON_INFORMATION)
if __name__ == '__main__':
app = wx.App()
frm = HelloFrame(None, title='Betting predictions')
#frm.Show()
app.MainLoop()
注意:您始终可以创建一条self.message
,该消息可以在函数外部设置,但在函数内部使用。这比尝试lambda函数更简单。@Petr Blahos的实例
变量已付诸实施。
请注意,self.st.SetLabel()
是在MessageBox
之前应用的,或者在取消消息之前,标签不会更新self.mycount
也声明为实例变量
import wx
class HelloFrame(wx.Frame):
def __init__(self, *args, **kw):
super(HelloFrame, self).__init__(*args, **kw)
pnl = wx.Panel(self)
self.st = wx.StaticText(pnl, label = "Betting")
font = self.st.GetFont()
font.PointSize += 10
font = font.Bold()
self.st.SetFont(font)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.st, wx.SizerFlags().Border(wx.TOP|wx.LEFT, 25))
pnl.SetSizer(sizer)
self.makeMenuBar()
self.CreateStatusBar()
self.SetStatusText("Welcome to wxPython!")
self.mycount = 0
# Show Frame and initially call OnHello (use None to compensate for a lack of event)
self.Show()
self.OnHello(None)
def makeMenuBar(self):
fileMenu = wx.Menu()
helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H",
"Help string shown in status bar for this menu item")
fileMenu.AppendSeparator()
exitItem = fileMenu.Append(wx.ID_EXIT)
helpMenu = wx.Menu()
aboutItem = helpMenu.Append(wx.ID_ABOUT)
menuBar = wx.MenuBar()
menuBar.Append(fileMenu, "&file")
menuBar.Append(helpMenu, "&help")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnHello, helloItem)
self.Bind(wx.EVT_MENU, self.OnExit, exitItem)
self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem)
def OnExit(self, event):
self.Close(True)
def OnHello(self, event):
self.mycount += 1
mystring = "Betting Display No: " + str(self.mycount)
self.st.SetLabel(mystring)
wx.MessageBox("Hello again from wxPython")
def OnAbout(self, event):
wx.MessageBox("This is a wxPython Hello World Sample", "About Hello World 2", wx.OK|wx.ICON_INFORMATION)
if __name__ == '__main__':
app = wx.App()
frm = HelloFrame(None, title='Betting predictions')
#frm.Show()
app.MainLoop()
注意:您始终可以创建一条self.message
,该消息可以在函数外部设置,但在函数内部使用。这比尝试lambda函数更简单。很抱歉,在尝试使用代码时,我遇到了这个错误:frm=HelloFrame(无,信息字符串,title='Betting predictions')super(HelloFrame,self)。\uuuuu init\uuuu(*args,**kw)TypeError:Frame():参数与任何重载调用不匹配:重载1:参数太多重载2:参数1具有意外的类型“str”Oops!固定的。谢谢。很抱歉,我在尝试使用以下代码时遇到此错误:frm=HelloFrame(无,信息字符串,title='Betting predictions')super(HelloFrame,self)。\uuuu init\uuu(*args,**kw)TypeError:Frame():参数与任何重载调用都不匹配:重载1:参数过多重载2:参数1具有意外的“str”类型!固定的。谢谢。当点击窗口中的按钮时,这确实可以改变标签,但我希望能够从一开始就改变它。我尝试过这样做:def OnHello(self,event,label):self.mycount+=1#mystring=“博彩显示编号:”+str(self.mycount)self.st.SetLabel(label)wx.MessageBox(“来自wxPython的再次你好”)但是我不知道在哪里调用这个函数并输入一个标签,因为我从来没有调用过它,只是frm=HelloFrame(None,title='botting predictions'),当点击窗口中的按钮时,它确实可以更改标签,我希望能够从一开始就改变它。我尝试过这样做:def OnHello(self,event,label):self.mycount+=1#mystring=“博彩显示编号:”+str(self.mycount)self.st.SetLabel(label)wx.MessageBox(“来自wxPython的再次你好”)但是我不知道在哪里调用这个函数并输入标签,因为我从来没有调用过它,只是frm=HelloFrame(None,title='Betting predictions')