2015-07-13 15 views
1

我想获取在tkinter中画布 中绘制的项目的填充颜色或任何其他属性。在tkinter(Python)中获取在画布中绘制的项目的填充颜色或任何其他属性

def createWidgets(self): 
    self.canvas_1= tk.Canvas(self, bg='#FAFAFA',selectforeground='#BBDEFB'); 
    i=self.canvas_1.create_rectangle((self.canvas_1.winfo_reqwidth()/2)+100, 
            (self.canvas_1.winfo_reqheight()/2)+50, 
            (self.canvas_1.winfo_reqwidth()/2)+150, 
            (self.canvas_1.winfo_reqheight()/2)+100, 
            fill='#FF4081',width=0) 
    self.canvas_1.grid(); 
    color=    #want to access the fill color of item i using some getter functions. 

回答

2

可以使用itemcget方法做到这一点:
effbot

,所以你可以使用:

color = self.canvas_1.itemcget(i, "fill") 
+0

是否有一个setter函数就像这样,如果这不是太多要问,我现在正在做一些事情,所以我也需要一个setter函数 –

+0

我得到了setter函数 –

0

下面是关于如何让矩形的填充颜色的一个小例子。 ..

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
# 
# test_tkinter_get_config.py 
# 
# Copyright 2015 John Coppens <[email protected]> 
# 
# This program is free software; you can redistribute it and/or modify 
# it under the terms of the GNU General Public License as published by 
# the Free Software Foundation; either version 2 of the License, or 
# (at your option) any later version. 
# 
# This program is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
# GNU General Public License for more details. 
# 
# You should have received a copy of the GNU General Public License 
# along with this program; if not, write to the Free Software 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
# MA 02110-1301, USA. 
# 
# 


import Tkinter as Tk 

def main(args): 
    tk = Tk.Tk() 
    canvas_1 = Tk.Canvas(bg='#FAFAFA', selectforeground='#BBDEFB'); 
    i = canvas_1.create_rectangle((canvas_1.winfo_reqwidth()/2)+100, 
            (canvas_1.winfo_reqheight()/2)+50, 
            (canvas_1.winfo_reqwidth()/2)+150, 
            (canvas_1.winfo_reqheight()/2)+100, 
            fill = '#FF4081', width = 0) 
    canvas_1.grid(); 
    #color = 
    print(canvas_1.itemcget(i, "fill")) 
    return 0 

if __name__ == '__main__': 
    import sys 
    sys.exit(main(sys.argv)) 
相关问题