python - Kivy:chow获取FloatLayout中心坐标

标签 python kivy

我想在 FloatLayout 的中心画一个圆。据我所知,我只获得了默认值。为什么显示代码中的圆圈不是红色的?您能解释一下获取必要坐标的过程吗?

import kivy
from kivy.config import Config
kivy.config.Config.set('graphics','resizable', False)


from kivy.app import App
from kivy.graphics import Color, Ellipse

from kivy.uix.widget import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button



class Scene(FloatLayout):
    def __init__(self, **kwargs):
        super(Scene, self).__init__(**kwargs)

    def draw_circle(self):
        with self.canvas:
            Color=(1,0,0)
            circ = Ellipse(pos = (self.center_x, self.center_y), size=(20,20))

    def on_touch_down(self, touch):    
        pass

class Game(BoxLayout):
    def __init__ (self,**kwargs):
        super(Game, self).__init__(**kwargs)
        self.orientation = 'vertical'

        but1 = Button(text = 'button 1')
        self.add_widget(but1)

        self.scene =  Scene()
        self.add_widget(self.scene)


class TestApp(App):
    def build(self):
        game = Game()
        game.scene.draw_circle()

        return game

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

最佳答案

您应该在创建 float 布局时定义它的大小。

self.scene =  Scene(size=(300, 300))

那么您的圆应该位于 FloatLayout 尺寸的中心。

我还认为 FloatLayout 更好地与 size_hintpos_hint 一起使用,而不是固定坐标。

关于python - Kivy:chow获取FloatLayout中心坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47892187/

相关文章:

python - 获取随机轨道

python - 如何切片 2D Python 数组? : "TypeError: list indices must be integers, not tuple" 失败

Python 多处理,进程和池的区别,数据的 pickle

python - Kivy - 有什么方法可以将 Python 函数绑定(bind)到使用 kv 语言创建的小部件吗?

python - 使用 buildozer 构建后,kivy 应用程序中的文件路径无效

python - 为什么 windows 会给出 sqlite3.OperationalError 而 linux 不会?

python - 如何将两个用户定义的参数传递给 scrapy 蜘蛛

python - 防止 pyttsx3 卡住 GUI

python - 屏幕内的小部件(按钮、输入文本等)无法正常工作

android - 在 kivy 应用程序中包含第三方模块时出错