Image 如何使用python语言在kivy中定位图像?

Image 如何使用python语言在kivy中定位图像?,image,python-2.7,position,kivy,Image,Python 2.7,Position,Kivy,如何使用python而不是kivy语言(.kv文件)定位图像 我的工作如下 import kivy kivy.require('1.8.0') # current kivy version import ConfigParser from kivy.app import App from kivy.uix.widget import Widget from kivy.uix.label import Label from kivy.uix.textinput import TextInput

如何使用python而不是kivy语言(.kv文件)定位图像

我的工作如下

import kivy
kivy.require('1.8.0') # current kivy version
import ConfigParser

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.image import Image





class login(Widget):
    #checking to see if the user logging in has privilage to access program
    def validate(self, *args):

        username = self.ids['user']
        user = username.text
        config = ConfigParser.ConfigParser()
        config.read('Privilage.cfg')
        if not config.has_section('users'):
            print 'the Privilage.cfg file has been tampered with'

        if not config.has_option('users',user):
            print 'user is not listed'
        else:
            userPriv = config.get('users',user)
            print 'user',user,'has privilage',userPriv
            with self.canvas:
                Image(source='/Users/Kevin/Desktop/Python-extras/SSS Assistant/Manager_images/check-icon.png',pos=self.pos,size=self.size)



class DataApp(App):
    def build(self):
        return login()


if __name__ == '__main__':
    DataApp().run()
我的目标是验证用户是否存在,如果存在,则在用户名框旁打一个复选标记,然后稍后(还没有代码)验证匹配的密码(也没有代码)。我不想编码如果验证失败或密码匹配会发生什么,因为如果我不能更改图像位置,就没有意义了

目前,图像显示在正中央,非常大(我也需要缩小它)。我已经在Kivy.uix.image.image中搜索了Kivy API,但找不到解决方案(搜索了位置更改或居中搜索之类的内容,但找不到)。我试图在python中实现这一点,因为我将图像构造函数放在if语句中,我不确定.kv文件是否可以实现这一点,因为它们控制属性

**我关心的是:

with self.canvas:
    Image(source="path",pos=self.pos,size=self.size)
以下是附带的kivy文件,以防万一:

#:kivy 1.8.0

<login>:
    canvas:
        Rectangle:
            source:"/Users/Kevin/Desktop/Python-extras/SSS Assistant/Manager_images/background.jpg"
            pos: self.pos
            size: self.size
    Label:
        center_x: root.width / 2
        top: (root.top/2) + 150
        text: 'Please login with your ID and password'
    Label:
        center_x: (root.width/2)-130
        top: (root.top/2)+110
        text: 'Username:'
    Label:
        center_x: (root.width/2)-130
        top: (root.top/2)+83
        text: 'Password:'
    TextInput:
        id: user
        center_x: (root.width/2) +10
        top:(root.top/2)+75
        size_hint: None, None
        size: 200, 30
        max_lines: 1
        valign: 'middle'
        halighn: 'center'
        font_size: 15
        multiline: False
        on_text_validate: root.validate()
    TextInput:
        id: password
        center_x: (root.width/2) +10
        top:(root.top/2)+45
        size_hint: None, None
        size: 200, 30
        max_lines: 1
        valign: 'middle'
        halighn: 'center'
        font_size: 15
        multiline: False
        password: True
#:kivy 1.8.0
:
画布:
矩形:
来源:“/Users/Kevin/Desktop/Python extras/SSS Assistant/Manager\u images/background.jpg”
pos:self.pos
大小:self.size
标签:
中心x:root.width/2
顶部:(根。顶部/2)+150
文本:“请使用您的ID和密码登录”
标签:
中心x:(根部宽度/2)-130
顶部:(根。顶部/2)+110
文本:“用户名:”
标签:
中心x:(根部宽度/2)-130
顶部:(根。顶部/2)+83
文本:“密码:”
文本输入:
id:用户
中心x:(根部宽度/2)+10
顶部:(根。顶部/2)+75
大小提示:无,无
尺码:200、30
最大线数:1
valign:“中间”
哈利恩:“中心”
字体大小:15
多行:False
在\u文本上\u验证:root.validate()
文本输入:
id:密码
中心x:(根部宽度/2)+10
顶部:(根。顶部/2)+45
大小提示:无,无
尺码:200、30
最大线数:1
valign:“中间”
哈利恩:“中心”
字体大小:15
多行:False
密码:True
提前谢谢

with self.canvas:
    Image(source="path",pos=self.pos,size=self.size)
图像是一个小部件,而不是画布指令。您应该使用
self.add_widget
添加它,而不要使用画布


我想你也在用kv重新设计轮子,你的位置和尺寸说明都是用kv来表示的,你可能会发现使用kivy的布局类来管理这些东西会更容易。

我做了这个:self.add\u widget(图片(来源=“/Users/Kevin/Desktop/Python extras/SSS-Assistant/Manager_-images/check-icon.png”,size=(20,20),pos=((self.width)/2,(self.top)/2)))虽然pos仍然不会更改。我希望复选框位于第一个框的右侧,但根据页面的大小,复选框会显示在页面的不同点。