मैं अपने ऐप के लिए GUI बनाने का प्रयास कर रहा हूं, और मैंने RelativeLayout के बारे में कुछ सीखा है।
मेरी समझ से, आप एक चर "pos_hint" को परिभाषित करते हैं, और 0 से 1 तक एक मान निर्दिष्ट करते हैं जो दर्शाता है कि यह उस स्थिति के कितना करीब है। उदाहरण के लिए "दाएं": 1 == 100 प्रतिशत दाईं ओर

समस्या यह है कि, मेरे पास एक लंबवत BoxLayout है, जिसमें 2 RelativeLayouts हैं, जिसमें विजेट हैं, जिनमें से एक का अपना RelativeLayout भी है।
यह वास्तव में तेजी से जटिल हो गया, और मैं उत्तर की समस्या को खोजने के लिए संघर्ष कर रहा हूं।

मेरा उद्देश्य है:
ऊपरी बीच में "संदिग्ध ग्राफ", जिसमें 2 दीर्घवृत्त एक दूसरे को ओवरलैप करते हैं।"
ऊपर दाईं ओर "सेटिंगबटन"।
y-मध्य में "मूडबटन", और निचले बॉक्स के x का 1/4वां भाग
y-मध्य पर "FoodButton", और निचले बॉक्स के x का 3/4 वां भाग

बग को ठीक करने के बारे में पूर्ण उत्तरों से लेकर मामूली संकेतों तक, किसी भी मदद की सराहना की जाती है।

संपादित करें: कोड जोड़ना भूल गए। माफ़ करना।

<MainLayout>:
    canvas:
        Color:
            rgba: 1, 1, 1, 1
        Rectangle:
            pos: 0,0
            size: self.width,self.height
    BoxLayout:
        size: self.parent.size
        orientation: "vertical"
        RelativeLayout:
            canvas:
                Color:
                    rgba: 1,0,0,1
                Rectangle:
                    size: self.width,self.height
            size: self.parent.size
            SettingButton:
                size: 50,100
                pos_hint: {'right':1,'y':1}
                Button:
                    text: "Settings"
                    size: self.size
            SuspectGraph:
                pos_hint: {'center_x':1,'center_y':1}
                RelativeLayout:
                    GraphInnerCircle:
                        pos_hint: {'center_x':1,'center_y':1}
                        size: 200,200
                        canvas:
                            Color:
                                rgba: .5,.5,.5,1
                            Ellipse:
                                size: self.size
                    GraphOuterCircle:
                        pos_hint: {'center_x':1,'center_y':1}
                        size: 300,300
                        canvas:
                            Color:
                                rgba: .3,.3,.3,1
                            Ellipse:
                                size: self.size
        RelativeLayout:
            MoodButton:
                size: 50,100
                pos_hint:{'left':.1,'center_y':.7}
                Button:
                    text: "Register Mood"
            FoodButton:
                size: 50,100
                pos_hint:{'right':.1,'center_y':.7}
                Button:
                    text: "Register Food"
0
Dyn4mi 26 नवम्बर 2020, 10:46

1 उत्तर

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

समस्या यह थी कि गुण नेस्टेड विजेट पर कैसे काम करते हैं।
उदाहरण के लिए इस स्निपेट को लें:

        size: self.parent.size
        orientation: "vertical"
        RelativeLayout: 
            canvas:
                Color:
                    rgba: 1,0,0,1
                Rectangle:
                    size: self.width,self.height
            size: self.parent.size
            SettingButton:
                size: 50,100
                pos_hint: {'right':1,'y':1}
                Button:
                    text: "Settings"
                    size: self.size

पंक्ति 12 पर pos_hint विजेट "सेटिंगबटन" पर लागू होता है लेकिन अंदर के बटन पर नहीं। मुझे नहीं पता क्यों, लेकिन यह कैसे काम करता है।

Pos_hint को सीधे बटन पर सेट करने का प्रयास काम नहीं करता है क्योंकि यह सेटिंगबटन से अपनी स्थिति का अनुमान लगाने की कोशिश करेगा, जो कि लेआउट नहीं है।

समाधान
सेटिंग बटन के लिए अजगर साइड कोड बदलें एक बटन बनें और विजेट नहीं।
pos_hint सीधे सेटिंगबटन पर लागू करें।

उम्मीद है कि यह किसी को भी उसी समस्या को हल करने में मदद करता है!

0
Dyn4mi 1 पद 2020, 06:15