Kivy Image Widget не движется вправо - PullRequest
0 голосов
/ 03 июня 2018

Если вы посмотрите под первым GridLayout, есть виджет Image.Я пытаюсь заставить его переместиться на правую сторону экрана.Любая помощь присваивается.Вот кодИдентификатор нужного мне виджета с правой стороны - id = image.Я, кажется, не могу переместить это вообще.

Я даю больше деталей, потому что stackoverflow хочет это.Я думаю, что вышеприведенное довольно детально на самом деле является переполнением стека, но вы отвечаете, так что здесь больше текста.

Спасибо всем.

from kivy.lang import Builder
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition


Builder.load_string("""
<ClientScreen>:
    GridLayout:
        id: main_grid_layout
        orientation: 'vertical'
        cols: 1
        Label:
            id: name_label
            text: '<NO MENU NAME>'
            size_hint_y: None
            size: self.texture_size 
            halign: 'left'
            valign: 'center'
            text_size: self.size
            padding_x: 35
            canvas.before:
                Color:
                    rgb: .6, .6, .6
                Rectangle:
                    pos: self.pos
                    size: self.size
        Image:
            id: image
            pos_hint: {'right': 0.5}
        ScrollView:
            id: text_scroll_view
            bar_width: 10
            size: self.size
            GridLayout:
                id: text_grid_layout
                orientation: 'vertical'
                cols: 1
                size_hint_y: None
                height: self.minimum_height
        ScrollView:
            size: self.size
            bar_width: 10
            size_hint_y: 0.40
            GridLayout:
                id: action_grid_layout
                # padding: [10, 10, 10, 10]
                orientation: 'vertical'
                cols: 1
                size_hint_y: None
                # row_default_height: 30
                height: self.minimum_height
""")


class LoginScreen(Screen):
    pass


class ClientScreen(Screen):
    pass


class MyApp(App):
    def build(self):
        from kivy.core.window import Window

        sm = ScreenManager()
        sm.transition = NoTransition()

        global CLIENT_SCREEN

        LOGIN_SCREEN = LoginScreen(name='login')
        CLIENT_SCREEN = ClientScreen(name='client')

        sm.add_widget(LOGIN_SCREEN)
        sm.add_widget(CLIENT_SCREEN)

        sm.current = 'client'

        Window.size = (300, 120)
        self.title = 'xNemesis Client V0'

        return sm


MyApp().run()

1 Ответ

0 голосов
/ 03 июня 2018

В файле kv сделайте следующее.Пожалуйста, обратитесь к примеру ниже для деталей.

  1. Замените GridLayout: на BoxLayout:, потому что GridLayout с cols: 1 имеет такое же представление, как BoxLayout с orientation: 'vertical'.
  2. Удалить cols: 1
  3. В Image:, добавить size_hint_x: 0.4
  4. Заменить pos_hint: {'right': 0.5} на pos_hint: {'right': 1}

Примечание

GridLayout не имеет атрибута с названием ориентации.

Пример

main.py

from kivy.lang import Builder
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition


Builder.load_string("""
<ClientScreen>:
    BoxLayout:
        id: main_grid_layout
        orientation: 'vertical'
        Label:
            id: name_label
            text: '<NO MENU NAME>'
            size_hint_y: None
            size: self.texture_size 
            halign: 'left'
            valign: 'center'
            text_size: self.size
            padding_x: 35
            canvas.before:
                Color:
                    rgb: .6, .6, .6
                Rectangle:
                    pos: self.pos
                    size: self.size
        Image:
            id: image
            source: 'raspberrypi.png'
            size_hint_x: 0.4
            pos_hint: {'right': 1}
        ScrollView:
            id: text_scroll_view
            bar_width: 10
            size: self.size
            GridLayout:
                id: text_grid_layout
                orientation: 'vertical'
                cols: 1
                size_hint_y: None
                height: self.minimum_height
        ScrollView:
            size: self.size
            bar_width: 10
            size_hint_y: 0.40
            GridLayout:
                id: action_grid_layout
                # padding: [10, 10, 10, 10]
                orientation: 'vertical'
                cols: 1
                size_hint_y: None
                # row_default_height: 30
                height: self.minimum_height
""")


class LoginScreen(Screen):
    pass


class ClientScreen(Screen):
    pass


class MyApp(App):
    def build(self):
        from kivy.core.window import Window

        sm = ScreenManager()
        sm.transition = NoTransition()

        global CLIENT_SCREEN

        LOGIN_SCREEN = LoginScreen(name='login')
        CLIENT_SCREEN = ClientScreen(name='client')

        sm.add_widget(LOGIN_SCREEN)
        sm.add_widget(CLIENT_SCREEN)

        sm.current = 'client'

        Window.size = (300, 120)
        self.title = 'xNemesis Client V0'

        return sm


MyApp().run()

Вывод

Img01 - App Startup

...