如何解决WXPython,将 SetLabel() 传递回 wx
Python 3.8.6, WXPython, 体验 - 菜鸟
制作一个在事件发生后从列表中播放视频的 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,label = idleText + " - " + ntpath.basename(catIdleText),pos = (5,5))
testBtn1 = wx.Button(self,-1,"Test",20))
addBtn1 = wx.Button(self,"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**
'''
当前,当从 FileDialog 中选择文件时,新的更新文本不会改变。错误输出如下:
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.idleLabel
,self.catIdleText
。
def __init__(self,parent,frame_object):
# ... code ....
self.idleLabel = wx.StaticText(self,label=idleText + " - " + ntpath.basename(catIdleText),pos=(5,5))
def addVid1(self,event,):
# .... code ...
self.idleLabel.SetLabel("Idle Animation" + " - " + ntpath.basename(catIdleText))
也许这样你就不会将 text
赋值给 self.idleLabel
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。