在python kivy中单击按钮后如何打开弹出窗口?
我试图在使用python kivy单击按钮后打开弹出窗口,但出现了一个错误 这是我的密码:在python kivy中单击按钮后如何打开弹出窗口?,python,button,popup,kivy,bind,Python,Button,Popup,Kivy,Bind,我试图在使用python kivy单击按钮后打开弹出窗口,但出现了一个错误 这是我的密码: from kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.uix.label import Label from kivy.uix.popup import Popup from kivy.config import Config Conf
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from kivy.config import Config
Config.set("graphics", "resizable", 0)
Config.set("graphics", "width", 400)
Config.set("graphics", "height", 500)
class myLayout(BoxLayout):
def __init__(self, **kwargs):
super(myLayout, self).__init__(**kwargs)
btn = Button(text="Click")
btn.bind(on_press=self.clk)
self.add_widget(btn)
def clk(self, obj):
popup = Popup(content="I am popup")
return popup.open()
class ReminderApp(App):
def build(self):
mL = myLayout()
return mL
if __name__ == "__main__":
ReminderApp().run()
如果在clk
功能中而不是在弹出窗口中只打印某些内容,例如:
def clk(self, obj):
print("Hello world")
请帮帮我,我卡住了
以下是错误消息:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang/builder.py", line 619, in _apply_rule
setattr(widget_set, key, value)
File "kivy/weakproxy.pyx", line 33, in kivy.weakproxy.WeakProxy.__setattr__
File "kivy/properties.pyx", line 478, in kivy.properties.Property.__set__
File "kivy/properties.pyx", line 516, in kivy.properties.Property.set
File "kivy/properties.pyx", line 571, in kivy.properties.Property.dispatch
File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
File "kivy/_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/popup.py", line 223, in on__container
self._container.add_widget(self.content)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/boxlayout.py", line 312, in add_widget
widget.fbind('pos_hint', self._trigger_layout)
AttributeError: 'str' object has no attribute 'fbind'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 40, in <module>
ReminderApp().run()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/app.py", line 826, in run
runTouchApp()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/base.py", line 502, in runTouchApp
EventLoop.window.mainloop()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/core/window/window_sdl2.py", line 723, in mainloop
self._mainloop()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/core/window/window_sdl2.py", line 460, in _mainloop
EventLoop.idle()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/base.py", line 340, in idle
self.dispatch_input()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/base.py", line 325, in dispatch_input
post_dispatch_input(*pop(0))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/base.py", line 231, in post_dispatch_input
listener.dispatch('on_motion', etype, me)
File "kivy/_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/core/window/__init__.py", line 1352, in on_motion
self.dispatch('on_touch_down', me)
File "kivy/_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/core/window/__init__.py", line 1368, in on_touch_down
if w.dispatch('on_touch_down', touch):
File "kivy/_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/widget.py", line 460, in on_touch_down
if child.dispatch('on_touch_down', touch):
File "kivy/_event.pyx", line 707, in kivy._event.EventDispatcher.dispatch
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/behaviors/button.py", line 151, in on_touch_down
self.dispatch('on_press')
File "kivy/_event.pyx", line 703, in kivy._event.EventDispatcher.dispatch
File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
File "kivy/_event.pyx", line 1138, in kivy._event.EventObservers._dispatch
File "main.py", line 25, in clk
popup = Popup(content="I am popup")
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/modalview.py", line 152, in __init__
super(ModalView, self).__init__(**kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/anchorlayout.py", line 68, in __init__
super(AnchorLayout, self).__init__(**kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/layout.py", line 76, in __init__
super(Layout, self).__init__(**kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/widget.py", line 348, in __init__
Builder.apply(self, ignored_consts=self._kwargs_applied_init)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang/builder.py", line 469, in apply
self._apply_rule(widget, rule, rule, ignored_consts=ignored_consts)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang/builder.py", line 630, in _apply_rule
e), cause=tb)
kivy.lang.builder.BuilderException: Parser: File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/data/style.kv", line 506:
...
504:# Popup widget
505:<Popup>:
>> 506: _container: container
507: GridLayout:
508: padding: '12dp'
...
AttributeError: 'str' object has no attribute 'fbind'
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang/builder.py", line 619, in _apply_rule
setattr(widget_set, key, value)
File "kivy/weakproxy.pyx", line 33, in kivy.weakproxy.WeakProxy.__setattr__
File "kivy/properties.pyx", line 478, in kivy.properties.Property.__set__
File "kivy/properties.pyx", line 516, in kivy.properties.Property.set
File "kivy/properties.pyx", line 571, in kivy.properties.Property.dispatch
File "kivy/_event.pyx", line 1214, in kivy._event.EventObservers.dispatch
File "kivy/_event.pyx", line 1120, in kivy._event.EventObservers._dispatch
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/popup.py", line 223, in on__container
self._container.add_widget(self.content)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/boxlayout.py", line 312, in add_widget
widget.fbind('pos_hint', self._trigger_layout)
Exception ignored in: functools.partial(<function _widget_destructor at 0x102eaad08>, 23)
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/widget.py", line 265, in _widget_destructor
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang/builder.py", line 760, in unbind_widget
File "kivy/weakproxy.pyx", line 30, in kivy.weakproxy.WeakProxy.__getattr__
AttributeError: 'weakref' object has no attribute 'cline_in_traceback'
Exception ignored in: functools.partial(<function _widget_destructor at 0x102eaad08>, 34)
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/widget.py", line 265, in _widget_destructor
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang/builder.py", line 760, in unbind_widget
File "kivy/weakproxy.pyx", line 30, in kivy.weakproxy.WeakProxy.__getattr__
AttributeError: 'weakref' object has no attribute 'cline_in_traceback'
Exception ignored in: functools.partial(<function _widget_destructor at 0x102eaad08>, 39)
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/widget.py", line 265, in _widget_destructor
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/lang/builder.py", line 760, in unbind_widget
File "kivy/weakproxy.pyx", line 30, in kivy.weakproxy.WeakProxy.__getattr__
AttributeError: 'weakref' object has no attribute 'cline_in_traceback'
回溯(最近一次呼叫最后一次):
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/lang/builder.py”,第619行,在应用规则中
setattr(小部件集合、键、值)
文件“kivy/weakproxy.pyx”,第33行,位于kivy.weakproxy.weakproxy.\uu setattr__
文件“kivy/properties.pyx”,第478行,在kivy.properties.Property.\uu集合中__
文件“kivy/properties.pyx”,第516行,在kivy.properties.Property.set中
文件“kivy/properties.pyx”,第571行,位于kivy.properties.Property.dispatch中
文件“kivy/_event.pyx”,第1214行,在kivy.\u event.eventobservators.dispatch中
文件“kivy/_event.pyx”,第1120行,在kivy.\u event.eventobserver.\u调度
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/uix/popup.py”,第223行,在on__容器中
self.\u容器.添加\u小部件(self.content)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/uix/boxlayout.py”,第312行,在add_小部件中
fbind('pos\u hint',self.\u trigger\u布局)
AttributeError:“str”对象没有属性“fbind”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“main.py”,第40行,在
ReminderApp().run()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/app.py”,第826行,正在运行
runTouchApp()
runTouchApp中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/base.py”,第502行
EventLoop.window.mainloop()
mainloop中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/core/window/window\u sdl2.py”,第723行
self._mainloop()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/core/window/window\u sdl2.py”,第460行,在mainloop中
EventLoop.idle()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/base.py”,第340行,空闲状态
self.dispatch_input()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/base.py”,第325行,在dispatch_输入中
发送后输入(*pop(0))
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/base.py”,第231行,在发送后输入中
dispatch('on_motion',etype,me)
文件“kivy/_event.pyx”,第707行,在kivy.\u event.EventDispatcher.dispatch中
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/core/window/__init__.py”,第1352行,动态
自我派遣(“在我触地时”)
文件“kivy/_event.pyx”,第707行,在kivy.\u event.EventDispatcher.dispatch中
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/core/window/__init__.py”,第1368行,在on_触摸屏下
如果w.dispatch('打开触摸屏',触摸屏):
文件“kivy/_event.pyx”,第707行,在kivy.\u event.EventDispatcher.dispatch中
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/uix/widget.py”,第460行,在on_触摸屏中
如果是child.dispatch('on_touch_down',touch):
文件“kivy/_event.pyx”,第707行,在kivy.\u event.EventDispatcher.dispatch中
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/kivy/uix/behaviors/button.py”,第151行,在on_触摸屏中
自动发送('在印刷机上')
文件“kivy/_event.pyx”,第703行,在kivy.\u event.EventDispatcher.dispatch中
文件“kivy/_event.pyx”,第1214行,在kivy.\u event.eventobservators.dispatch中
文件“kivy/_event.pyx”,第1138行,在kivy.\u event.eventobserver.\u调度
文件“main.py”,第25行,clk格式
弹出=弹出(content=“我是弹出”)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/uix/modalview.py”,第152行,在__
超级(莫达尔维,自我)。\uuuuu初始值(**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/uix/anchorlayout.py”,第68行,在__
超级(主播布局,自我)。\uuuuu初始值(**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/uix/layout.py”,第76行,在__
超级(布局,自我)。\uuuuu初始化(**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/uix/widget.py”,第348行,在__
Builder.apply(self,忽略\u consts=self.\u kwargs\u applicated\u init)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/lang/builder.py”,第469行,在apply中
self.\u应用\u规则(小部件、规则、规则、忽略的\u常量=忽略的\u常量)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/lang/builder.py”,第630行,在应用规则中
e) ,原因=tb)
kivy.lang.builder.BuilderException:Parser:File“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/data/style.kv”,第506行:
...
504:#弹出窗口小部件
505::
>>506:_容器:容器
507:网格布局:
508:填充:“12dp”
...
AttributeError:“str”对象没有属性“fbind”
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/kivy/lang/builder.py”,第619行,在应用规则中
setattr(小部件集合、键、值)
文件“kivy/weakproxy.pyx”,第33行,位于kivy.weakproxy.weakproxy.\uu setattr__
文件“kivy/properties.pyx”,第478行,在kivy.properties.Property.\uu集合中__
文件“kivy/properties.pyx”,第516行,在kivy.properties.Property.set中
文件“kivy/properties.pyx”,第571行,在kivy.properties.Property中。
popup = Popup(content=content, auto_dismiss=False)
def clk(self, obj):
popup = Popup(content=Label(text="I am popup"))
popup.open()
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from kivy.config import Config
Config.set("graphics", "resizable", 0)
Config.set("graphics", "width", 400)
Config.set("graphics", "height", 500)
class myLayout(BoxLayout):
def __init__(self, **kwargs):
super(myLayout, self).__init__(**kwargs)
btn = Button(text="Click")
btn.bind(on_press=self.clk)
self.add_widget(btn)
def clk(self, obj):
popup = Popup(content=Label(text="I am popup"))
popup.open()
class ReminderApp(App):
def build(self):
mL = myLayout()
return mL
if __name__ == "__main__":
ReminderApp().run()