2015-07-13 41 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)) 
相關問題