Getting the fill color or any other property of a item drawn in a canvas in tkinter(Python)

為{幸葍}努か 提交于 2021-02-16 20:52:21

问题


I want to get the fill color or any other property of a item drawn in a canvas in 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.

回答1:


you can do this using the itemcget method:
effbot

so you could use:

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



回答2:


Here's a small example on how to get the fill color of the rectangle...

#!/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))


来源:https://stackoverflow.com/questions/31385036/getting-the-fill-color-or-any-other-property-of-a-item-drawn-in-a-canvas-in-tkin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!