问题
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