मैंने अपने किवी ऐप में स्क्रॉल व्यू जोड़ा है, लेकिन हर बार जब मैं लंबवत स्क्रॉल करता हूं तो मेरे आश्चर्य की बात है, स्क्रीन स्वचालित रूप से मुझे आउटपुट स्क्रीन की प्रारंभिक स्थिति में वापस लाती है। क्या मेरे ऐप में लगातार होने वाली पुनरावृत्ति को रोकने का कोई तरीका है?

प्रकार के इनपुट का उपयोग करें (किसी भी स्ट्रिंग को "," और बिना रिक्त स्थान के अलग किया गया है): "क्या, क्या, मैं, कहता हूं, अपने बारे में, क्या, क्या करता हूं, मैं कहता हूं, अपने बारे में, क्या, क्या करता हूं, मैं, कहता हूं, के बारे में, अपने बारे में, क्या, क्या, मैं, अपने बारे में, अपने बारे में, क्या, क्या करता हूं, मैं कहता हूं, अपने बारे में, अपने बारे में, क्या करता हूं, मैं कहता हूं, अपने बारे में खुद।"

मेरा कोड इस तरह जाता है। यह मेरी absl.py फ़ाइल है।

from kivy.app import App
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.popup import Popup
from kivy.uix.label import Label
from kivy.properties import ObjectProperty
from kivy.core.window import Window
from kivy.factory import Factory

Window.size = (600, 600)

class HelpWindow(Screen):
    """
    This is a help window. It contains the functionality of all the given boxes
    on the main window.
    """

    def main_window(self):
        sm.current = "main"

class MainWindow(Screen):
    """
    This is the main window that contains the main form.
    This connects the frontend of the app to the backend
    """
    target = ObjectProperty(None)


    def v_popup(self):
        version_popup()
    
    def help(self):
        sm.current = "help"
    
    def output_window(self):
        sm.current = "output"

    def get_results(self):
        out_window = self.manager.get_screen('output')
        out_window.main(self.target.text)
        sm.current = "output"
    

class OutputWindow(Screen):
    """
    This is the output window. All the generated results will be seen here.
    """
    res = ObjectProperty(None)
    res_out = ObjectProperty(None)

    def main(self, options):
        options = list(options.split(","))
        for item in options:
            self.res_out.add_widget(Label(size_hint_y=None,height=30,text=item))
        

    def main_window(self):
        sm.current = "main"

class WindowManager(ScreenManager):
    pass

def version_popup():
    """
    Version Popup Window.
    """
    
    version = "v1.0"
    version_text = "this is "+version+" for this app"
    vpop = Popup(title="Version",
                    content=Label(text=version_text),
                    size_hint=(None, None), size=(400, 400))
    
    vpop.open()

### main builder and WindowManager object
kv = Builder.load_file("start.kv")
sm = WindowManager()

### Adding screens to widget
screens = [MainWindow(name="main"), HelpWindow(name="help"), OutputWindow(name="output")]
for screen in screens:
    sm.add_widget(screen)

sm.current = "main"

### main working
class AnubisApp(App):
    def build(self):
        return sm
        
if __name__ == '__main__':
    AnubisApp().run()

और यह मेरी start.kv फ़ाइल है।

<HelpWindow>
    name:"help"

    Button:
        id:ms
        text:"Main Screen"
        on_release:
            root.manager.transition.direction = "left"
            root.main_window()

<MainWindow>
    name:"main"

    target : target
    
    
    GridLayout:
        cols:1

        GridLayout:
            cols:3
            
            row_force_default: True
            row_default_height: 50
            
            Button:
                id:hp
                text:"Help"
                on_release:
                    root.manager.transition.direction = "right"
                    root.help()
            
            Button:
                id:version
                text: "Version"
                on_release: 
                    root.v_popup()
        
        GridLayout:
            cols:2
            row_force_default: True
            row_default_height: 30

            Label:
                text:"Target *"
            TextInput:
                id:target
                multiline:False
            
            
        GridLayout:
            cols:3
            row_force_default: True
            row_default_height: 50

            Label:
                text:""
            
            Button:
                text:"Submit"
                on_release:
                    root.get_results()
            
            Label:
                text:""


<OutputWindow>
    name:"output"
    
    res_out:res_out

    
    GridLayout:
        cols:1

        ScrollView:

            GridLayout:
                id:res_out
                cols : 1
                size_hint_y: None
                
                
        
        Button:
            id:ms
            size_hint_y : .1
            text:"Main Screen"
            on_release:
                root.manager.transition.direction = "right"
                root.main_window()

मुझे लगता है कि समस्या केवल मेरे सिस्टम की हो सकती है, लेकिन मैं इसके बारे में इतना निश्चित नहीं हूं। साथ ही, स्क्रॉलबार की ऊंचाई, चौड़ाई और रंग सेट करना उस पर काम नहीं कर रहा था। मैंने "स्क्रॉल व्यू" में कुछ पंक्तियां जोड़ीं लेकिन काम नहीं कर रही थीं।

ScrollView:
    size_hint : None, None
    height : 150
    width : 20
    bar_color : [.7, .7, .7, .9]
0
Shikhar Gupta 1 जून 2021, 23:18

1 उत्तर

सबसे बढ़िया उत्तर

मैं पीछे हटने की समस्या को पुन: उत्पन्न नहीं कर सकता, लेकिन स्क्रॉलिंग के काम करने के लिए आपको GridLayout के लिए एक ऊंचाई निर्दिष्ट करनी होगी:

        GridLayout:
            id:res_out
            cols : 1
            size_hint_y: None
            height: self.minimum_height  # required to size GridLayout
0
John Anderson 2 जून 2021, 05:32