我是基维新人。我想创建一个应用程序,它接受用户文本输入,然后显示它。但是当用户输入很长时,我希望显示区域可以滚动。如何在Kivy中添加滚动文本小部件?
我已经做了一些教程,可以单独做两件事情,但我有麻烦把它们放在一起。
下面是代码,允许滚动文本:
__version__ = '1.0.1'
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.scrollview import ScrollView
import warnings
import string
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.properties import StringProperty
Builder.load_string('''
<ScrolllabelLabel>:
Label:
text: root.text
font_size: 50
text_size: self.width, None
size_hint_y: None
height: self.texture_size[1]
''')
class ScrolllabelLabel(ScrollView):
text = StringProperty('srgsdrgsdfh dsfg dvgf vgsdfv srfvsdfsdrfv sevrv sdrfv serv serv serv servsrd vsv srvsdrfvvv' * 10)
runTouchApp(ScrolllabelLabel())
这里是显示你键入的代码:
__version__ = '1.0.1'
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.scrollview import ScrollView
import warnings
import string
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.properties import StringProperty
class SomeApp(App):
def build(self):
grid = GridLayout(cols=1, size_hint_x=None, width="600dp")
self.lbl0 = Label(text='Tap and type a word/phrase below') # create a label instance
grid.add_widget(self.lbl0) # physically add the label onto the layout
self.txt1 = TextInput(text='', multiline=False) # create a text input instance
grid.add_widget(self.txt1) # physically add the text input onto the layout
self.lbl1 = Label(text='Display') # create a label instance
grid.add_widget(self.lbl1) # physically add the label onto the layout
btn1 = Button(text='Press') # create a button instance
btn1.bind(on_press=self.mirror) # binding the button with the function below
grid.add_widget(btn1)
return grid
def mirror(self, userInput):
self.lbl1.text = self.txt1.text
SomeApp().run()
但我不能将它们合并:
__version__ = '1.0.1'
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.scrollview import ScrollView
import warnings
import string
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.properties import StringProperty
Builder.load_string('''
<ScrolllabelLabel>:
Label:
text: root.text
font_size: 50
text_size: self.width, None
size_hint_y: None
height: self.texture_size[1]
''')
class ScrolllabelLabel(ScrollView):
def __init__(self, **kwargs):
self.txt0 = StringProperty()
class SomeApp(App):
def build(self):
grid = GridLayout(cols=1, size_hint_x=None, width="600dp")
self.lbl0 = Label(text='Tap and type a word/phrase below') # create a label instance
grid.add_widget(self.lbl0) # physically add the label onto the layout
self.txt1 = TextInput(text='', multiline=False) # create a text input instance
grid.add_widget(self.txt1) # physically add the text input onto the layout
btn1 = Button(text='Press') # create a button instance
btn1.bind(on_press=self.displayFunc) # binding the button with the function below
grid.add_widget(btn1)
# Add scrolling text
"""self.lbl1 = Label(text='Display') # create a label instance
grid.add_widget(self.lbl1) # physically add the label onto the layout"""
scrollWidget = ScrolllabelLabel(text=self.lbl1.text)
grid.add_widget(scrollWidget)
return grid
def displayFunc(self, userInput):
self.lbl1.text = self.txt1
SomeApp().run()
我得到了这个错误:
'self.lbl1.text = self.txt1'编辑scrollwidget,这是你的属性的错误并使用self.txt1._text_,因为你想要的文字,而不是针对小部件本身。 – KeyWeeUsr
如何执行“self.lbl1.text = self.txt1编辑到scrollwidget”的建议? – KubiK888