# -*- coding: utf-8 -*-
import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
import arabic_reshaper
from bidi.algorithm import get_display
from PersianText import PersianTextInput
class GUI(Widget):
def __init__(self, **kwargs):
super(GUI, self).__init__(**kwargs)
label = Label(text=u"سلام", center=(100, 100))
label.font_name = "fonts/bnazanin.ttf"
label.font_size = 40
reshaped_text = arabic_reshaper.reshape(u'سلام')
bidi_text = get_display(reshaped_text)
label.text = reshaped_text = arabic_reshaper.reshape(bidi_text)
text_input = PersianTextInput()
self.add_widget(text_input)
self.add_widget(label)
class MyApp(App):
def build(self):
return GUI()
if __name__ == '__main__':
Error
[INFO ] [Logger ] Record log in /home/mahrous/.kivy/logs/kivy_17-01-25_12.txt
[INFO ] [Kivy ] v1.9.1
[INFO ] [Python ] v2.7.11 (default, Sep 2 2016, 14:51:16)
[GCC 5.3.1 20160406 (Red Hat 5.3.1-6)]
[INFO ] [Factory ] 179 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_gif, img_sdl2, 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 ] OpenGL version <2.1 Mesa 11.1.0 (git-525f3c2)>
[INFO ] [GL ] OpenGL vendor <Intel Open Source Technology Center>
[INFO ] [GL ] OpenGL renderer <Mesa DRI Intel(R) Ironlake Mobile >
[INFO ] [GL ] OpenGL parsed version: 2, 1
[INFO ] [GL ] Shading version <1.20>
[INFO ] [GL ] Texture max size <8192>
[INFO ] [GL ] Texture max units <16>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
/usr/lib64/python2.7/site-packages/kivy/core/clipboard/clipboard_gtk3.py:14: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
from gi.repository import Gtk, Gdk
[INFO ] [Clipboard ] Provider: gtk3(['clipboard_dbusklipper'] ignored)
[CRITICAL] [Cutbuffer ] Unable to find any valuable Cutbuffer provider at all!
xclip - OSError: [Errno 2] No such file or directory
File "/usr/lib64/python2.7/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
fromlist=[modulename], level=0)
File "/usr/lib64/python2.7/site-packages/kivy/core/clipboard/clipboard_xclip.py", line 17, in <module>
p = subprocess.Popen(['xclip', '-version'], stdout=subprocess.PIPE)
File "/usr/lib64/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
xsel - OSError: [Errno 2] No such file or directory
File "/usr/lib64/python2.7/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
fromlist=[modulename], level=0)
File "/usr/lib64/python2.7/site-packages/kivy/core/clipboard/clipboard_xsel.py", line 15, in <module>
p = subprocess.Popen(['xsel'], stdout=subprocess.PIPE)
File "/usr/lib64/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
[INFO ] [Base ] Start application main loop
[INFO ] [GL ] NPOT texture support is available
[INFO ] [Base ] Leaving application in progress...
Traceback (most recent call last):
File "Persian_main.py", line 33, in <module>
MyApp().run()
File "/usr/lib64/python2.7/site-packages/kivy/app.py", line 828, in run
runTouchApp()
File "/usr/lib64/python2.7/site-packages/kivy/base.py", line 487, in runTouchApp
EventLoop.window.mainloop()
File "/usr/lib64/python2.7/site-packages/kivy/core/window/window_sdl2.py", line 619, in mainloop
self._mainloop()
File "/usr/lib64/python2.7/site-packages/kivy/core/window/window_sdl2.py", line 362, in _mainloop
EventLoop.idle()
File "/usr/lib64/python2.7/site-packages/kivy/base.py", line 327, in idle
Clock.tick()
File "/usr/lib64/python2.7/site-packages/kivy/clock.py", line 515, in tick
self._process_events()
File "/usr/lib64/python2.7/site-packages/kivy/clock.py", line 647, in _process_events
event.tick(self._last_tick, remove)
File "/usr/lib64/python2.7/site-packages/kivy/clock.py", line 406, in tick
ret = callback(self._dt)
File "/usr/lib64/python2.7/site-packages/kivy/uix/textinput.py", line 1748, in _refresh_line_options
self._refresh_text_from_property()
File "/usr/lib64/python2.7/site-packages/kivy/uix/textinput.py", line 1767, in _refresh_text_from_property
self._refresh_text(self._get_text(encode=False), *largs)
File "/usr/lib64/python2.7/site-packages/kivy/uix/textinput.py", line 1787, in _refresh_text
_line_rects.append(Rectangle(size=lbl.size))
AttributeError: 'NoneType' object has no attribute 'size'