Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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 如何将键盘添加到全屏布局_Python_User Interface_Kivy - Fatal编程技术网

Python 如何将键盘添加到全屏布局

Python 如何将键盘添加到全屏布局,python,user-interface,kivy,Python,User Interface,Kivy,我有一个工作的Kivy应用程序,它使用全屏,因此我从未使用过Window对象。我现在想添加一个弹出式键盘,可以在必要时隐藏和弹出。然而,看看如何做到这一点,似乎我需要一个窗口对象,它存在于其中 因此,我从kivy.core.window import window添加了,并在kivy站点的window文档中复制了键盘示例 然而,现在我的“全屏”应用程序只占据了屏幕的一部分,而键盘却不见踪影?我错过了什么 添加了运行代码: from kivy.config import Config Config

我有一个工作的Kivy应用程序,它使用全屏,因此我从未使用过Window对象。我现在想添加一个弹出式键盘,可以在必要时隐藏和弹出。然而,看看如何做到这一点,似乎我需要一个窗口对象,它存在于其中

因此,我从kivy.core.window import window添加了
,并在kivy站点的window文档中复制了键盘示例

然而,现在我的“全屏”应用程序只占据了屏幕的一部分,而键盘却不见踪影?我错过了什么

添加了运行代码:

from kivy.config import Config
Config.set('graphics', 'borderless', '1')
Config.set('kivy', 'keyboard_mode', 'systemandmulti')
Config.set('graphics', 'width', '1920')
Config.set('graphics', 'height', '1080')
Config.set('graphics', 'fullscreen', 'auto')
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.core.window import Window
from kivy.uix.vkeyboard import VKeyboard
from kivy.base import runTouchApp

Builder.load_file("mykivyfile.kv")


class Widgets(Widget):
    pass


class MyKeyboardListener(Widget):

    def __init__(self, **kwargs):
        super(MyKeyboardListener, self).__init__(**kwargs)
        self._keyboard = Window.request_keyboard(
            self._keyboard_closed, self, 'text')
        if self._keyboard.widget:
            # If it exists, this widget is a VKeyboard object which you can use
            # to change the keyboard layout.
            pass
        self._keyboard.bind(on_key_down=self._on_keyboard_down)

    def _keyboard_closed(self):
        print('My keyboard have been closed!')
        self._keyboard.unbind(on_key_down=self._on_keyboard_down)
        self._keyboard = None

    def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
        print('The key', keycode, 'have been pressed')
        print(' - text is %r' % text)
        print(' - modifiers are %r' % modifiers)

        # Keycode is composed of an integer + a string
        # If we hit escape, release the keyboard
        if keycode[1] == 'escape':
            keyboard.release()

        # Return True to accept the key. Otherwise, it will be used by
        # the system.
        return True



class myApp(App):

    def build(self):
        global w
        w = Widgets()
        return w

    def testy(self):
        runTouchApp(MyKeyboardListener())

    def quitme(self):
        quit()



if __name__ == "__main__":
    myApp().run()
mykivyfile.kv:

#:kivy 1.8.0

<Widgets>:
    Button:
        size: 100,100
        pos: 100,100
        text: 'test'
        on_press: app.testy()

    Button:
        size: 100,100
        pos: 200,100
        text: 'quit'
        on_press: app.quitme()
#:kivy 1.8.0
:
按钮:
尺码:100100
位置:100100
文本:“测试”
按:app.testy()
按钮:
尺码:100100
位置:200100
文本:“退出”
按:app.quitme()

导入窗口之前是否设置了全屏配置?这是一个修复建议,还是问题所在?:)输入import语句后,我只得到一个空白屏幕。我尝试了win=Window()来初始化它,但它说不可调用。。。我不知道我在做什么!如果以前没有窗口(但仍然可以正常工作!),那么向代码中添加窗口的最佳方法是什么?您总是有一个窗口对象。请提供一个可运行的示例来演示这个问题。好的,我已经编辑了所有相关的代码。除非将Config.set放在其他导入之前,否则它不会做任何事情。