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

时间:2015-07-13 13:42:50

标签: python canvas tkinter

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

  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 个答案:

答案 0 :(得分:4)

您可以使用itemcget方法执行此操作:
effbot

所以你可以使用:

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

答案 1 :(得分:0)

这里有一个关于如何获得矩形填充颜色的小例子......

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  test_tkinter_get_config.py
#  
#  Copyright 2015 John Coppens <john@jcoppens.com>
#  
#  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))