python - 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**
'''
目前,当从 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
但可以访问 normal string
。但我看不出addVid1
你可以在哪里做到这一点。
但是,如果您想widgets
在不同的方法中使用(和其他变量),那么您应该使用self.
- 即self.idleLabel
, self.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
推荐阅读
- emacs - 无法将#+TITLE 添加到 org 文件并导出到 org v9.1.9 上的 HTML
- python - 替换未知的先验组数 - 正则表达式 python
- path - Kubernetes 入口规范中的路径
- reactjs - React 服务器端渲染 - addEventListener
- .net - 请求不返回
- sql - 从数千个列表中提取 4 个不同项目的最大日期值
- javascript - Angularjs 选项卡仅适用于使用 ng-repeat 的唯一数组元素
- java - Java JPA 布尔字段数据库
- java - 如何从 Java 和 Selenium 中的元素列表中获取元素中的元素
- linux - 将目录/文件输入文本文件,然后显示早于某个日期的文件