Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python kivy中单击按钮后如何打开弹出窗口?_Python_Button_Popup_Kivy_Bind - Fatal编程技术网

在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

我试图在使用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


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()