[英]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.