Python 调整kivy中按钮的大小

Python 调整kivy中按钮的大小,python,kivy,Python,Kivy,这个程序运行得很好,但是我不明白为什么按钮的大小和位置没有改变 数据集包含数值,比如说二维 1 2 34 5.6 7 8 如何在GUI中绘制这些值 您可以使用浮动布局 将其添加到main.py文件中 import numpy as np import kivy kivy.require('1.0.6') # replace with your current kivy version ! from kivy.app import App from kivy.uix.button import B

这个程序运行得很好,但是我不明白为什么按钮的大小和位置没有改变

数据集包含数值,比如说二维

1 2

34

5.6

7 8


如何在GUI中绘制这些值

您可以使用
浮动布局

将其添加到main.py文件中

import numpy as np
import kivy
kivy.require('1.0.6') # replace with your current kivy version !
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label

class myLayout(BoxLayout):
     def __init__(self, **kwargs):
         super(myLayout, self).__init__(**kwargs)

         btn1 = Button(text = "click 1", background_color=[0,0,1,0],pos=(200, 100))
         btn1.bind(on_press=self.clk1)
         btn2 = Button(text = "click 2", pos=(200, 100))
         btn2.bind(on_press=self.clk)
         btn3 = Button(text = "click 3", pos=(50, 100))
         btn3.bind(on_press=self.clk)

         self.add_widget(btn1)
         self.add_widget(btn2)
         self.add_widget(btn3)

    def clk(self, obj):
         print("Hello WOrld")

    def clk1(self, obj):
         dataset = np.genfromtxt(fname='data.txt',skip_header=1)
         print dataset

class NameApp(App):
     def build(self):
     mL = myLayout()
     return mL

if __name__ == '__main__':
    NameApp().run()    

有关布局的详细信息,请参见“布局”部分

你可能想结账,然后离开

编辑:1

哎呀!我忘了加这部分

如何在GUI中绘制这些值

使用
标签

btn1 = Button(text = "click 1",pos_hint= {'x': .1,'top': .2},size_hint = (.1,.1))
btn2 = Button(text = "click 2", pos_hint= {'x': .4,'top': .2},size_hint = (.1,.1))
btn3 = Button(text = "click 3", pos_hint= {'x': .66,'top': .2},size_hint = (.1,.1))

这是正在运行的代码,但是我如何使用画布绘制绘图和选项来更改其大小和形状。

这里您使用的是将忽略
pos
boxlayout
,尝试一些其他布局,如
floatlayout
relativelayout
或任何其他布局,然后使用
pos,大小提示或位置提示。
请参见此处Hi kiok46,感谢您建议它与FloatLayout一起使用。但是我想知道如何在布局屏幕中绘图。我将发布一个答案。嗨,谢谢你的答案。然而,我想问的问题很少。使用标签,我只能看到结果,但不能绘制它(可视化)。你能告诉我,如果可以想象的话,那么我该怎么做?。有人可以使用pyplot之类的python库进行2D或3D绘图吗?这里也可以看到严酷的答案。嗨,是的,我看到一些花园的例子,我觉得还可以。我在kivy文件夹中有目录garden,但是当我运行命令garden安装图时,它会显示错误,因为它无法找到C:\Users\stiwari\kivy,但是我到kivy的路径是:C:\Users\stiwari\kivy downloads\kivy-1.9.0\知道怎么了吗?
btn1 = Button(text = "click 1",pos_hint= {'x': .1,'top': .2},size_hint = (.1,.1))
btn2 = Button(text = "click 2", pos_hint= {'x': .4,'top': .2},size_hint = (.1,.1))
btn3 = Button(text = "click 3", pos_hint= {'x': .66,'top': .2},size_hint = (.1,.1))
self.lbl = Label(pos_hint= {'x': .73,'top': .6},size_hint = (.1,.1))
self.add_widget(self.lbl)

def clk1(self, obj):
....
self.lbl.text = str(dataset)
import kivy
kivy.require('1.0.6') # replace with your current kivy version !
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from kivy.garden.graph import Graph, MeshLinePlot
import math
from Tkinter import Tk
from tkFileDialog import askopenfilename
import os

class myLayout(FloatLayout):
   def __init__(self, **kwargs):
       super(myLayout, self).__init__(**kwargs)
       btn1 = Button(text = "click 1",pos_hint= {'x': .1,'top': .2},size_hint = (.1,.1))
       btn2 = Button(text = "click 2", pos_hint= {'x': .4,'top': .2},size_hint = (.1,.1))
       btn3 = Button(text = "click 3", pos_hint= {'x': .66,'top': .2},size_hint = (.1,.1))

       btn1.bind(on_press=self.clk1)
       btn2.bind(on_press=self.clk2)
       btn3.bind(on_press=self.clk3)

       self.add_widget(btn1)
       self.add_widget(btn2)
       self.add_widget(btn3)

   def clk1(self, obj):
       print("Hello World")

   def clk2(self, object):
       Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
       filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
       print(filename)

   def clk3(self, object):
       graph = Graph(xlabel='X', ylabel='Y', x_ticks_minor=5,x_ticks_major=25, y_ticks_major=1,y_grid_label=True, x_grid_label=True, padding=5,
     x_grid=True, y_grid=True, xmin=-0, xmax=100, ymin=-1, ymax=1)
       plot = MeshLinePlot(color=[1, 0, 0, 1])
       plot.points = [(x, math.sin(x / 10.)) for x in range(0, 101)]
       graph.add_plot(plot)
       self.add_widget(graph)

class NameApp(App):
   def build(self):
       mL = myLayout()
       return mL

if __name__ == '__main__':
   NameApp().run()