2016-11-19 1 views
1

Я пытаюсь поместить метку на экран, когда я просто делаю это, но когда я пытаюсь отформатировать текст, с помощью «text_size» ящика «I» получить эту ошибку: "TypeError: 'INT' объект не Iterable"Python/Kivy - TypeError: объект «int» не итерируется

Вот код:

#coding: utf-8 

from kivy.app import App 
from kivy.uix.label import Label 

def build(): 
    return Label(text = "Hello world!", italic=True, text_size=50) 

app = App() 
app.build = build 
app.run() 

Вот другой способ, что я пробовал:

#coding: utf-8 

from kivy.app import App 
from kivy.uix.label import Label 

def build(): 
    lb = Label() 
    lb.text= "Hello world!" 
    lb.italic = True 
    lb.text_size = 50 
    return lb 

app = App() 
app.build = build 
app.run() 

В обоих направлениях Я получаю такую ​​же ошибку:

C:\Users\jaumh\Anaconda3\envs\k35\python.exe C:/dev/kivy/Source/0001_hello_world/main.py 
[INFO    ] [Logger  ] Record log in C:\Users\jaumh\.kivy\logs\kivy_16-11-19_14.txt 
[INFO    ] [Kivy  ] v1.9.1 
[INFO    ] [Python  ] v3.5.2 |Continuum Analytics, Inc.| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] 
[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 <thread> for socket 
[INFO    ] [Window  ] Provider: sdl2 
[INFO    ] [GL   ] GLEW initialization succeeded 
[INFO    ] [GL   ] OpenGL version <b'4.4.0 - Build 20.19.15.4300'> 
[INFO    ] [GL   ] OpenGL vendor <b'Intel'> 
[INFO    ] [GL   ] OpenGL renderer <b'Intel(R) HD Graphics 5500'> 
[INFO    ] [GL   ] OpenGL parsed version: 4, 4 
[INFO    ] [GL   ] Shading version <b'4.40 - Build 20.19.15.4300'> 
[INFO    ] [GL   ] Texture max size <16384> 
[INFO    ] [GL   ] Texture max units <32> 
[INFO    ] [Shader  ] fragment shader: <b"WARNING: 0:7: '' : #version directive missing"> 
[INFO    ] [Shader  ] vertex shader: <b"WARNING: 0:7: '' : #version directive missing"> 
[INFO    ] [Window  ] auto add sdl2 input provider 
[INFO    ] [Window  ] virtual keyboard not allowed, single mode, not docked 
Traceback (most recent call last): 
    File "C:/dev/kivy/Source/0001_hello_world/main.py", line 11, in <module> 
    hello_world.run() 
    File "C:\Users\jaumh\Anaconda3\envs\k35\lib\site-packages\kivy\app.py", line 802, in run 
    root = self.build() 
    File "C:/dev/kivy/Source/0001_hello_world/main.py", line 7, in build 
    return Label(text = "Hello world!", italic=True, text_size=50) 
    File "C:\Users\jaumh\Anaconda3\envs\k35\lib\site-packages\kivy\uix\label.py", line 266, in __init__ 
    super(Label, self).__init__(**kwargs) 
    File "C:\Users\jaumh\Anaconda3\envs\k35\lib\site-packages\kivy\uix\widget.py", line 312, in __init__ 
    super(Widget, self).__init__(**kwargs) 
    File "kivy\_event.pyx", line 273, in kivy._event.EventDispatcher.__init__ (kivy\_event.c:5348) 
    File "kivy\properties.pyx", line 408, in kivy.properties.Property.__set__ (kivy\properties.c:5114) 
    File "kivy\properties.pyx", line 732, in kivy.properties.ListProperty.set (kivy\properties.c:11113) 
    File "kivy\properties.pyx", line 620, in kivy.properties.ObservableList.__init__ (kivy\properties.c:8397) 
TypeError: 'int' object is not iterable 

Process finished with exit code 1 
+0

'text_size' РЕКОМЕНДУЕМЫМ быть кортежем, придающим размер текстуры текста. Вы действительно хотите 'font_size'? – inclement

+0

ОЧЕНЬ ЧЕЛОВЕК, ВЫ ПРЕДВАРИТЕЛЬНО! Я хотел font_size вместо text_size, thenk вы !!! –

ответ

2

Попробуйте подход объектно-ориентированный, построить класс, который наследует от App класса kivy, представим его с помощью метода сборки, сделать его вернуть корневой виджет для приложения:

from kivy.app import App 
from kivy.uix.label import Label 

class MyApp(App): 

    def build(self): 
     return Label(text='Hello World') 

if __name__ == '__main__': 
    MyApp().run() 

""" 
# Alternatively 

class MyLabel(Label): 
    def __init__(self,text): 
     super(MyLabel, self).__init__() 
     self.text = text 
     self.italic = True 
     self.font_size = 50 

class MyApp(App): 
    def build(self): 
     return MyLabel("Hello Mars") 
""" 
+0

Первый код не запускается, но второй запускается. Хорошо, это прекрасно, что приложение работает, но теперь проблема заключается в следующем: я не понимаю код, что означает __init__, __name__ и __main__ означает? –

+0

Второй работает отлично, вам просто нужно заменить MyApp (тот, который не прокомментирован) со всем, что внутри комментария (под альтернативным вариантом). – nick

+0

Большое вам спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^