因此,我正在学校学习python,作为我当前项目的一部分,我希望能够在屏幕上制作小的“弹出窗口”。我选择使用wxpython进行此操作,但是遇到了问题。现在,我找不到添加变量的方法,因此我可以打印任何想要的东西。我试图在类和init函数中都添加一个额外的变量,但是都出现错误。我不习惯上课或上课,我将不胜感激。这是我正在使用的代码:
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")
或者如果要在构造窗口时设置文本,则可以将参数传递给函数(构造函数):
class HelloFrame(wx.Frame):
def __init__(self, label_title, *args, **kw):
super(HelloFrame, self).__init__(*args, **kw)
pnl = wx.Panel(self)
self.st = wx.StaticText(pnl, label = label_title)
[...]
if __name__ == '__main__':
t = "Some text"
app = wx.App()
frm = HelloFrame(None, t, title='Betting predictions')
frm.Show()
app.MainLoop()