添加变量以在wxpython框架中显示任何文本

问题描述 投票:0回答:1

因此,我正在学校学习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")不仅是“投注”并显示我想要的任何文字,但我一生都无法理解。这是我项目中相对较小的部分,因为我已经完成并有一些额外的时间,但我真的很想让它开始工作。

python python-3.x wxpython
1个回答
0
投票

您可以通过在静态文本上调用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()
© www.soinside.com 2019 - 2024. All rights reserved.