WXPython,将SetLabel()传递回wx



Python 3.8.6,WXPython,经验-Noobster

制作一个Gui,在事件发生后播放列表中的视频,就像按下按钮一样。有一个测试按钮;添加视频";按钮当添加一个视频时,我有它,所以它会进入列表的0。然后更改文本/标签以显示已加载的文件。下面是我目前使用的代码的摘录。

''

class LeftPanel (wx.Panel):
def __init__(self, parent, frame_object):
wx.Panel.__init__(self, parent = parent)
self.frame_object = frame_object
idleText = "Idle Animation"
catIdleText = "None"
idleLabel = wx.StaticText (self, 0, label = idleText + " - " + ntpath.basename(catIdleText), pos = (5, 5))
testBtn1 = wx.Button(self, -1, "Test", pos = (5, 20))
addBtn1 = wx.Button(self, -1, "Add Video", pos = (85, 20))
self.Bind(wx.EVT_BUTTON, self.buttonPressed1, testBtn1)
self.Bind(wx.EVT_BUTTON, self.addVid1, addBtn1)

def addVid1(self, event,):
with wx.FileDialog(self, "Open XYZ file", wildcard="XYZ files (*.mp4)|*.mp4", style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
if fileDialog.ShowModal() == wx.ID_CANCEL:
return
filePathList[0] = fileDialog.GetPath()
catIdleText = filePathList[0]
idleLabel.SetLabel("Idle Animation" + " - " + ntpath.basename(catIdleText)) **<--- where error occurs**

''

当前,当从文件对话框中选择文件时,新更新的文本不会更改。错误输出为:

Traceback (most recent call last):
File "frame1.py", line 179, in addVid1
idleLabel.SetLabel("Idle Animation" + " - " + ntpath.basename(catIdleText))
AttributeError: 'str' object has no attribute 'SetLabel'

我也试过LeftPanel.catIdleText

我原以为将新的更新传递回最初的catIdleText是一件非常简单的事情,但这让我很困惑。非常感谢您的帮助。

错误可能意味着您将一些文本直接分配给变量idleLabel = "text",而现在您无法访问Label,只能访问正常的string。但我看不出在方法addVid1中哪里可以做到这一点。

但是,如果您想在不同的方法中使用widgets(和其他变量(,那么您应该使用self.,即self.idleLabelself.catIdleText

def __init__(self, parent, frame_object):

# ... code ....
self.idleLabel = wx.StaticText(self, 0, label=idleText + " - " + ntpath.basename(catIdleText), pos=(5, 5))

def addVid1(self, event,):
# .... code ...
self.idleLabel.SetLabel("Idle Animation" + " - " + ntpath.basename(catIdleText))

也许这样你就不会把text传给self.idleLabel

最新更新