Python Kivy의 각 위젯에 선을 그리는 방법

Mauzzz0

레이블에 이진 트리를 표시하려고합니다. 중앙에서 오른쪽 및 왼쪽 가장자리까지 각 레이블 내부에 선을 어떻게 그릴 수 있습니까? 이 작업은 매우 이상합니다. 이해합니다.하지만 가장 기본적인 Kivy 개체를 사용하여 자체적으로 작성한 트리를 표시해야합니다. 키비 나무는 사용할 수 없습니다. 인터넷의 모든 솔루션은 터치 스크린 전용입니다.

이 루프에서 노드 값이있는 레이블을 추가합니다. 노드가 없으면 0입니다.

class TreeApp(App):
    def build(self):
        bl = BoxLayout(orientation='vertical', padding=5, spacing=5)
            for i in range(maxdepth):
                inside_bl = BoxLayout(orientation='horizontal')
                for j in range(2 ** i):
                    try: inside_bl.add_widget(Label01(text=str(mx_lvl[i][j]),color=(0.5,0.5,0.5,1)))
                    except: inside_bl.add_widget(Label111(text="0",color=(0.5,0.5,0.5,0.5)))
                bl.add_widget(inside_bl)
        return bl

여기에서 label01 클래스를 만들려고했습니다. 나는 자기를 사용하는 것을 생각했다. 각 레이블에 대해 자체 선을 만들고 레이블의 원점 또는 중심을 기준으로 그립니다.

class Label01(Label):
    def __init__(self,**kwargs):
        super(Label01,self).__init__(**kwargs)

        with self.canvas:
            self.pos = self.pos
            Color(0,1,0,1)
            self.line= Line(points=(self.x+100,self.y+100,self.x+250,self.y+250),close = True)

레이블 111도 마찬가지입니다. 나는 self를 사용하는 것으로 생각했습니다. 각 레이블에 대해 고유 한 선을 만들고 레이블의 원점 또는 중심을 기준으로 그립니다.

  • tree.kv
#:kivy 1.11.1
<Label111>:
    canvas.before:
        Line:
            
            width: 2
            points: (self.x, self.y+50, self.x+200, self.y+100, self.x+300, self.y+200)
        Color:
            rgb: (0.9,0.9,0.9,0.9)
  • main.py :
class Label111(Label):
    pass

self를 사용할 때 그렇게 생각했습니다. 각 레이블 (총 31 개) 안에 테스트 라인이 표시되지만 창 하단에는 2 개 라인 만 있습니다. 질문 : 중심을 기준으로 각 레이블 내부에 두 개의 선을 어떻게 그리나요?두 줄만있는 창

존 앤더슨

당신의 라인을 그리기 때문에 Label01그것의 __init__()방법을 모든 라인의 위치와 크기 전에 그려 Label01설정됩니다. 따라서 모든 선은의 기본 위치 인 Label01(0,0)을 사용하여 그려집니다 . 파이썬 코드에서이 작업을 수행하기 때문에의 위치 Label01가 변경 될 때 줄을 조정하는 바인딩이 없습니다 .

조정을 수행하기 위해 자신의 바인딩을 작성하거나 kv에서 행을 정의하여이를 수행 하도록 허용하여이 문제를 해결할 수 있습니다 kv. 이렇게 :

<Label01>:
    canvas.before:
        Color:
            rgba: 0,1,0,1
        Line:
            points: self.center_x,self.center_y,self.center_x+250,self.center_y+250

포인트는 Label01(당신이 언급했듯이) 의 중심을 기준으로 정의 Label01되며 , 정의 는 간단합니다.

class Label01(Label):
    pass

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

목록의 각 행 사이에 선을 그리는 방법?

분류에서Dev

각 위젯의 축에 액세스하는 방법

분류에서Dev

선택되지 않은 탭의 QTabWidget에서 Qt 위젯을 그리는 방법은 무엇입니까?

분류에서Dev

Python으로 화면에 빈 사각형을 그리는 방법

분류에서Dev

Python에서 밀도 맵을 그리는 삼각 측량 방법

분류에서Dev

python2.7 : 그림에서 x 축의 격자 선 값을 그리는 방법

분류에서Dev

TImage가 선택되었을 때 주위에 사각형을 그리는 방법

분류에서Dev

Emacs의 Python 모드에서 시각적 선을 제거하는 방법

분류에서Dev

Kivy에서 위젯의 크기 변경을 방지하는 방법은 무엇입니까?

분류에서Dev

그룹화 된 쿼리의 각 범주에 대해 "최상의"행을 선택하는 우아한 방법

분류에서Dev

"행 위젯에서 두 개의 텍스트 위젯을 만드는 방법"

분류에서Dev

python tkinter 특정 그리드 공간에서 위젯의 레이블을 변경하는 방법은 무엇입니까?

분류에서Dev

Python을 사용하여 일반 그리드의 각 지점 위에 커널을 스택하는 방법은 무엇입니까?

분류에서Dev

텍스트 위젯 (Python)에서 하위 텍스트의 색상을 변경하는 방법

분류에서Dev

최상위 레벨에 직사각형을 그리는 방법

분류에서Dev

Kivy의 Python 코드에서 화면을 변경하는 방법

분류에서Dev

Ruby에서 각 배열의 하위 문자열을 선택하는 방법

분류에서Dev

R의 각 그룹에서 두 세트의 행을 무작위로 선택하는 방법

분류에서Dev

X와 Y의 각도를 찾은 다음 각 그리드 선을 가변 각도로 교차하는 선을 그리는 방법은 무엇입니까?

분류에서Dev

Graphviz에서 대각선 가장자리를 그리는 방법

분류에서Dev

Tkinter 위젯을 다른 위젯 위에 유지하는 방법

분류에서Dev

GtkNotebook 위젯에 GtkAboutDialog의 내용을 삽입하는 방법

분류에서Dev

GridView Flutter 내에서 위젯의 오프셋을 얻는 방법

분류에서Dev

위젯의 중심을 Tkinter에서 유지하는 방법?

분류에서Dev

위젯의 TextView에 현재 시간을 표시하는 방법

분류에서Dev

Google Maps V3의 JSON에서 다각형 배열을 그리는 방법

분류에서Dev

KIVY에서 위젯을 제거하는 방법 (라벨, 버튼 등)

분류에서Dev

일부 알고리즘의 출력을 시각화하기 위해 선분을 그리는 가장 쉬운 방법은 무엇입니까?

분류에서Dev

주어진 길이로 곡선의 각 점에 법선 벡터를 그리는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    목록의 각 행 사이에 선을 그리는 방법?

  2. 2

    각 위젯의 축에 액세스하는 방법

  3. 3

    선택되지 않은 탭의 QTabWidget에서 Qt 위젯을 그리는 방법은 무엇입니까?

  4. 4

    Python으로 화면에 빈 사각형을 그리는 방법

  5. 5

    Python에서 밀도 맵을 그리는 삼각 측량 방법

  6. 6

    python2.7 : 그림에서 x 축의 격자 선 값을 그리는 방법

  7. 7

    TImage가 선택되었을 때 주위에 사각형을 그리는 방법

  8. 8

    Emacs의 Python 모드에서 시각적 선을 제거하는 방법

  9. 9

    Kivy에서 위젯의 크기 변경을 방지하는 방법은 무엇입니까?

  10. 10

    그룹화 된 쿼리의 각 범주에 대해 "최상의"행을 선택하는 우아한 방법

  11. 11

    "행 위젯에서 두 개의 텍스트 위젯을 만드는 방법"

  12. 12

    python tkinter 특정 그리드 공간에서 위젯의 레이블을 변경하는 방법은 무엇입니까?

  13. 13

    Python을 사용하여 일반 그리드의 각 지점 위에 커널을 스택하는 방법은 무엇입니까?

  14. 14

    텍스트 위젯 (Python)에서 하위 텍스트의 색상을 변경하는 방법

  15. 15

    최상위 레벨에 직사각형을 그리는 방법

  16. 16

    Kivy의 Python 코드에서 화면을 변경하는 방법

  17. 17

    Ruby에서 각 배열의 하위 문자열을 선택하는 방법

  18. 18

    R의 각 그룹에서 두 세트의 행을 무작위로 선택하는 방법

  19. 19

    X와 Y의 각도를 찾은 다음 각 그리드 선을 가변 각도로 교차하는 선을 그리는 방법은 무엇입니까?

  20. 20

    Graphviz에서 대각선 가장자리를 그리는 방법

  21. 21

    Tkinter 위젯을 다른 위젯 위에 유지하는 방법

  22. 22

    GtkNotebook 위젯에 GtkAboutDialog의 내용을 삽입하는 방법

  23. 23

    GridView Flutter 내에서 위젯의 오프셋을 얻는 방법

  24. 24

    위젯의 중심을 Tkinter에서 유지하는 방법?

  25. 25

    위젯의 TextView에 현재 시간을 표시하는 방법

  26. 26

    Google Maps V3의 JSON에서 다각형 배열을 그리는 방법

  27. 27

    KIVY에서 위젯을 제거하는 방법 (라벨, 버튼 등)

  28. 28

    일부 알고리즘의 출력을 시각화하기 위해 선분을 그리는 가장 쉬운 방법은 무엇입니까?

  29. 29

    주어진 길이로 곡선의 각 점에 법선 벡터를 그리는 방법은 무엇입니까?

뜨겁다태그

보관