【发布时间】:2019-07-08 16:01:11
【问题描述】:
在尝试更改 TextInput 小部件的显示文本时,我遇到了这个错误:
AttributeError: 'super' object has no attribute '__getattr__'
它抛出错误并且程序停止。
错误位于 .py 文件第 35 行。
这个问题只有在代码中有特定行时才会出现;否则有效。
.py 文件:
from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
import nibabel as nib
from kivy.garden.filebrowser import FileBrowser
from kivy.utils import platform
from kivy.uix.popup import Popup
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
Builder.load_file("stack-test2.kv")
class Tabs(TabbedPanel):
def nOpen(self):
npop = niiPop()
npop.open()
class niiPop(Popup):
pathVariable = ' '
file = ' '
def nProcessor(self):
if len(self.ids.nFile.selection) == 1:
niiPop.pathVariable = str(self.ids.nFile.selection[0])
niiPop.file = nib.load(niiPop.pathVariable)
displayHeader = TextInput(text = str(niiPop.file.header), readonly = True)
self.ids.nFile.clear_widgets()
self.ids.nFile.add_widget(displayHeader)
niiPop.auto_dismiss = True
self.ids.fld1.text = niiPop.pathVariable
else:
self.ids.nFile.filename = ''
class stackTest1(App):
def build(self):
self.title = 'Test app'
return Tabs()
if __name__ == "__main__":
app = stackTest1()
app.run()
.kv 文件:
<TabbedPanelStrip>:
<Tabs>:
do_default_tab: False
tab_width: self.size[0] / 3
TabbedPanelItem:
text: 'Setup'
id: tab1
BoxLayout:
orientation: 'horizontal'
BoxLayout:
orientation: 'vertical'
BoxLayout:
orientation: 'horizontal'
Label:
text: 'file import'
size_hint: (0.3, 0.2)
TextInput:
id: fld1
text: ' '
multiline: False
readonly: True
size_hint: (0.6, 0.2)
Button:
id: btn1
text: '...'
size_hint: (0.1, 0.2)
on_press: root.nOpen()
TabbedPanelItem:
text: 'tab2'
TabbedPanelItem:
text: 'tab3'
<niiPop>:
id: niiPop
title: 'Select a file'
size_hint: (0.8, 0.8)
auto_dismiss: False
BoxLayout:
orientation: 'vertical'
FileBrowser:
id: nFile
filters: ['*.nii']
select_string: 'Select'
on_success: root.nProcessor()
on_canceled: root.dismiss()
输出错误日志:
self.ids.fld1.text = niiPop.pathVariable
File "kivy\properties.pyx", line 841, in kivy.properties.ObservableDict.__getattr__
AttributeError: 'super' object has no attribute '__getattr__'
提前感谢您的帮助。
【问题讨论】:
-
您正在使用的
id是为Tabs小部件定义的,但您使用它就像是为niiPop小部件定义的一样。
标签: python python-3.x user-interface kivy kivy-language