我需要帮助我正在学习kivy,我使用pycharm作为开发的IDE。为了与kivy一起工作,我创建了一个virtualenvs,其中包含requeriments:
kivy = 1.10
Cython = 0.23
Python = 3.5
至于设置,我没有太多的麻烦。它是后来当我试图生成一个布局,它没有出现。是我的代码:
# coding = utf-8
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.core.window import Window
def click():
print (ed.text)
def build():
layout = FloatLayout()
ed = TextInput(text="USER.COM")
global ed
ed.size_hint = None, None
ed.height = 300
ed.width = 400
ed.y = 60
ed.x = 250
bt = Button(text="Click Me")
bt.size_hint = None, None
bt.height = 50
bt.width = 200
bt.y = 150
bt.x = 170
bt.size_hint = None, None
bt.on_press = click()
layout.add_widget(ed)
layout.add_widget(bt)
return layout
Window.size=600,600
open= App()
open.title = "USER_FREE_AS"
open.buid=build
open.run()
日志报告不允许pycharm访问该函数。是我的日志:
/home/user/.virtualenvs/k35/bin/python /home/user/Projetos/Python/kivy/source/tela_layout/main.py
/home/user/Projetos/Python/kivy/source/tela_layout/main.py:18: SyntaxWarning: name 'ed' is assigned to before global declaration
global ed
[INFO ] [Logger ] Record log in /home/victorpenna/.kivy/logs/kivy_17-11-13_11.txt
[INFO ] [Kivy ] v1.10.0
[INFO ] [Python ] v3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609]
[INFO ] [Factory ] 194 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [OSC ] using <multiprocessing> for socket
[INFO ] [Window ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] Backend used <gl>
[INFO ] [GL ] OpenGL version <b'3.0 Mesa 17.3.0-rc2 - padoka PPA'>
[INFO ] [GL ] OpenGL vendor <b'Intel Open Source Technology Center'>
[INFO ] [GL ] OpenGL renderer <b'Mesa DRI Intel(R) HD Graphics 5500 (Broadwell GT2) '>
[INFO ] [GL ] OpenGL parsed version: 3, 0
[INFO ] [GL ] Shading version <b'1.30'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [ProbeSysfs ] device match: /dev/input/event8
[INFO ] [MTD ] Read event from </dev/input/event8>
[INFO ] [ProbeSysfs ] device match: /dev/input/event13
[INFO ] [MTD ] Read event from </dev/input/event13>
[INFO ] [ProbeSysfs ] device match: /dev/input/event14
[INFO ] [MTD ] Read event from </dev/input/event14>
[INFO ] [Base ] Start application main loop
[WARNING] [MTD ] Unable to open device "/dev/input/event8". Please ensure you have the appropriate permissions.
[WARNING] [MTD ] Unable to open device "/dev/input/event13". Please ensure you have the appropriate permissions.
[WARNING] [MTD ] Unable to open device "/dev/input/event14". Please ensure you have the appropriate permissions.
[INFO ] [Base ] Leaving application in progress...
Process finished with exit code 0
我该如何解决这个问题?
P.S:我的Linux是Ubuntu 16.04,Intel GPU。
3条答案
按热度按时间rqcrx0a61#
暗窗
由于存在打字错误,显示了一个黑色窗口。
替换:
其中:
Kivy文档
Programming Guide » Kivy Basics
Programming Guide » Kv language
设备权限
要使用这些设备,您需要授予用户或组权限。这可以通过以下方式完成(在您的情况下,将“X”替换为8,13,14):
SyntaxWarning:名称'艾德'
在赋值之前,应该声明全局变量***艾德***。
输出
llycmphe2#
将
event<X>
的所有者更改为当前用户sudo chown $whoami:input /dev/input/event8
或以root身份运行它,如
sudo ./env/bin/python3 main.py
q8l4jmvw3#
您有一个错字:
应该是
但别这么做之后将方法放到示例中(monkeypatching)会很快变得非常混乱。其他开发人员在这种情况下不会想到它。kivy还对应用程序的类名做了一些魔术,它将按照命名约定定位
.kv
文件。因此,改为写:这样你也避免了全局变量,这是大多数时候你做的事情不太理想的标志。
如果你还是kivy的新手,我建议你通过kivy tutorials。