рисовать в пространстве, оставленном BoxLayout - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу создать графический интерфейс, который позволит мне вводить текст внизу, а также рисовать в оставшейся части экрана. Я смог создать текстовое поле и кнопку внизу окна, используя BoxLayout, но яЯ не могу использовать оставшееся место для рисования.Вот вывод моего кода: Вывод

А ниже мой код

import sys
import os
import kivy
kivy.require("1.10.0")
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.widget import Widget
from kivy.graphics import Line,Ellipse
from kivy.config import Config

Config.set('input', 'mouse', 'mouse,multitouch_on_demand')

class Draw(Widget):
    def on_touch_down(self,touch):
        print(touch)
        with self.canvas:
            touch.ud["line"]=Line(points=(touch.x,touch.y))
    def on_touch_move(self,touch):
        print(touch)
        with self.canvas:
            touch.ud["line"].points +=(touch.x,touch.y)
    def on_touch_up(self,touch):
        print("released mouse",touch)


class MAP(BoxLayout):    
    def __init__(self, **kwargs):
        super(MAP, self).__init__(**kwargs)        
        self.S=TextInput(multiline=False, size_hint=(800,0.05))
        self.add_widget(self.S)
        self.b=Button(text="OK",size_hint=(200,0.05))
        self.add_widget(self.b)
    Draw()






class GUI(App):
    def build(self):
        return MAP()

if __name__ == '__main__':
    print(Window.size)
    GUI().run()

1 Ответ

0 голосов
/ 02 февраля 2019

Ваш Draw виджет выполняет рисование, но он никогда не добавляется на дисплей.Попробуйте изменить класс MAP на:

class MAP(BoxLayout):
    def __init__(self, **kwargs):
        super(MAP, self).__init__(**kwargs)
        self.S=TextInput(multiline=False, size_hint=(800,0.05))
        self.add_widget(self.S)
        self.b=Button(text="OK",size_hint=(200,0.05))
        self.add_widget(self.b)
        self.draw = Draw()
        self.add_widget(self.draw)
   # Draw()

Обратите внимание, что блуждающий Draw() закомментирован (он ничего не делал), и теперь к виджету MAP добавлен виджет Draw..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...