簡體   English   中英

小部件在Kivy中的位移

[英]Displacement of widget in Kivy

使用Kivy,我試圖編寫一個顯示圖和按鈕的簡單應用程序。 我有以下代碼,但是問題是我無法控制kv文件中圖形的大小和位置。 因此,我在左下角的Kivy的默認位置有一個小圖,如下所示。 我確定我在這里做一些愚蠢的事情,但不知道該怎么辦? 如果有人可以提供幫助,我非常感謝。

在此處輸入圖片說明

這是代碼:

# Imports
import matplotlib
matplotlib.use('module://kivy.garden.matplotlib.backend_kivy')
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
import matplotlib.pyplot as plt
from kivy.app import App
from kivy.app import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.core.window import Window

class Graph(Widget):
    def __init__(self, **kwargs):
        super(Graph, self).__init__(**kwargs)
        layout = FloatLayout()
        plt.plot([1, 2, 3], [1, 2, 3])
        figure = plt.gcf()
        self.plot = FigureCanvasKivyAgg(figure=figure)
        layout.add_widget(self.plot)
        self.add_widget(layout)


class Interface(FloatLayout):
    pass


class TestApp(App):

    def build(self):
        Window.clearcolor = (1, 1, 1, 1)
        return Interface()

if __name__ in ('__main__'):
    TestApp().run()

以及以下kv設置:

Interface:

<Interface>:
    padding: 10
    spacing: 10


    Button:
        text: "Open"
        size_hint_x: .15
        size_hint_y: .05
        pos_hint: {'x': 0.05, 'top': .55}

    Graph:
        size_hint_x: .5
        size_hint_y: .5
        pos_hint:{"x":0.5,"y":.5}

編輯:

將Graph更改為FloatLayout的子類,如下所示:

class Graph(FloatLayout):

def __init__(self, **kwargs):
    super(Graph, self).__init__(**kwargs)

    layout = FloatLayout()
    plt.plot([1, 2, 3], [1, 2, 3])
    figure = plt.gcf()
    self.plot = FigureCanvasKivyAgg(figure=figure)
    layout.add_widget(self.plot)
    self.add_widget(layout)

啟用了更改圖形大小(FloatLayout)的功能。 但是,圖形的位置(FloatLayout)無法更改。

在此處輸入圖片說明

您在Graph__init__中創建的布局具有位置(0, 0)和大小(100, 100) ,因為這些是默認設置,沒有任何內容告訴它可以去其他地方。 當您添加self.plot ,它也具有這些參數,因為布局使子項自行填充。

一種直接的解決方法是使Graph子類成為類似於BoxLayout的布局,在這種情況下,它將自動放置其子項以填充它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM