Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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:KV语言中的代码弹出解除按钮_Python_Ubuntu 12.04_Kivy - Fatal编程技术网

Python Kivy:KV语言中的代码弹出解除按钮

Python Kivy:KV语言中的代码弹出解除按钮,python,ubuntu-12.04,kivy,Python,Ubuntu 12.04,Kivy,我正在尝试用kivy编写一个自定义弹出窗口,用于从ColorPicker小部件中选择颜色。现在我正试图连接一个“OK”按钮来关闭弹出窗口,但它不起作用。弹出窗口显示正确,但当我单击“确定”时,什么也没有发生。弹出窗口继续显示在屏幕上 这是我的python代码 from kivy.app import App from kivy.uix.popup import Popup from kivy.uix.boxlayout import BoxLayout from kivy.uix.colorpi

我正在尝试用kivy编写一个自定义弹出窗口,用于从ColorPicker小部件中选择颜色。现在我正试图连接一个“OK”按钮来关闭弹出窗口,但它不起作用。弹出窗口显示正确,但当我单击“确定”时,什么也没有发生。弹出窗口继续显示在屏幕上

这是我的python代码

from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.colorpicker import ColorPicker

class PaintWindow(BoxLayout):
    pass

class CPopup(Popup):
    def on_press_dismiss(self, *args):
        self.dismiss()
        return False

class PixPaint(App):
    def build(self):
        pw = PaintWindow()
        return pw

if __name__ == '__main__':
    PixPaint().run()
这是KV代码

<PaintWindow>:
    orientation: 'vertical'
    CPopup:

<CPopup>:
    title: 'Pick a Color'
    size_hint: 1.0, 0.6
    id: cpopup

    BoxLayout:
        orientation: 'vertical'

        ColorPicker:
            size_hint: 1.0, 1.0

        Button:
            text: 'OK'
            size_hint: 1.0, 0.2
            on_press: cpopup.on_press_dismiss()
:
方向:“垂直”
CPopup:
:
标题:“选择一种颜色”
尺寸提示:1.0,0.6
id:cpopup
盒子布局:
方向:“垂直”
颜色选择器:
大小提示:1.0,1.0
按钮:
文字:“OK”
大小提示:1.0,0.2
新闻发布会:cpopup.on新闻发布会

非常感谢您的帮助。对不起,所有的代码!:)

弹出窗口未关闭的原因是您正在将其直接添加到您的
PaintWindow
中:

<PaintWindow>:
    orientation: 'vertical'
    CPopup:
2-在其他地方调用
open()
方法。作为
PixPaint

class PixPaint(App):
    def build(self):
        pw = PaintWindow()
        popup = CPopup();
        popup.open()
        return pw
为了以防万一,有几个额外的:

  • 您还可以在
    的定义中去掉
    id:cpopup
    ,改用
    root
    on\u press:root.on\u press\u disclesh()
  • 此外,您还可以取消按上的
    而改为按上的
    :root.disease()

  • 这是有道理的。窗口将其视为一个永久的小部件。谢谢
    class PixPaint(App):
        def build(self):
            pw = PaintWindow()
            popup = CPopup();
            popup.open()
            return pw