如何在Python中将变量从一个类传递到另一个类

2024-10-01 17:35:18 发布

您现在位置:Python中文网/ 问答频道 /正文

这里有一个代码示例

class Example(wx.Frame):

    def __init__(self, *args, **kw):
        super(Example, self).__init__(*args, **kw) 
        self.InitUI()

    def InitUI(self):   
        pnl = wx.Panel(self)
        sld = wx.Slider(pnl, value=0, minValue=0, maxValue=200, pos=(30, 20), 
            size=(650, 15), style=wx.SL_HORIZONTAL)
        sld1 = wx.Slider(pnl, value=0, minValue=0, maxValue=360, pos=(30, 50), 
            size=(650, 15), style=wx.SL_HORIZONTAL)

        sld.Bind(wx.EVT_SCROLL, self.OnSliderScroll)
        sld1.Bind(wx.EVT_SCROLL, self.OnSliderScroll)

        self.txt1 = wx.StaticText(pnl, label='0', pos=(250, 120))
        self.txt2 = wx.StaticText(pnl, label='0', pos=(10, 50))

        self.SetSize((700, 200))
        self.SetTitle('ROBO ARM')
        self.Centre()
        self.Show(True)    

    def OnSliderScroll(self, e):
        id_slider = e.GetId()
        obj = e.GetEventObject()
        VARIABLE = obj.GetValue()
        tty = str(val)+str(id_slider)
        self.txt1.SetLabel(str(VARIABLE)


class Example1(wx.Frame):

    def __init__(self, parent, title):
        super(Example1, self).__init__(parent, title=title, size=(350, 280))
        self.Bind(wx.EVT_PAINT, self.OnPaint)

        self.Centre()
        self.Show()

    def OnPaint(self, e):
        dc = wx.PaintDC(self)
        dc.SetPen(wx.Pen('#d4d4d4'))

        dc.SetBrush(wx.Brush('#c56c00'))
        dc.DrawRectangle(10, 7, 90, **VARIABLE NEEDS HERE**)

我有两个问题:如何将变量从类Example传递到Example1到标记的位置 第二,据我所知,我可以改变自己行:self.txt1.SetLabel(str(变量)表示示例.InitUI(这里还有其他的东西)你能把这个字符串写成它必须的样子吗?在

谢谢


Tags: posselfsizeinitbindexampledefdc
1条回答
网友
1楼 · 发布于 2024-10-01 17:35:18

在这个场景中(VARIABLE似乎是Example1的所有实例的共享状态),使用全局变量似乎是合适的。在

VARIABLE = None

class Example(wx.Frame):
    ...

    def OnSliderScroll(self, e):
        global VARIABLE

        id_slider = e.GetId()
        obj = e.GetEventObject()
        VARIABLE = obj.GetValue()
        tty = str(val)+str(id_slider)
        self.txt1.SetLabel(str(VARIABLE))


class Example1(wx.Frame):
    ...

    def OnPaint(self, e):
        global VARIABLE

        dc = wx.PaintDC(self)
        dc.SetPen(wx.Pen('#d4d4d4'))

        dc.SetBrush(wx.Brush('#c56c00'))
        dc.DrawRectangle(10, 7, 90, VARIABLE)

或者,如果出于某种原因希望避免全局变量,可以使用一个类变量(仍然假设它在Example1的所有实例中共享:

^{pr2}$

相关问题 更多 >

    热门问题