tkinter 畫布(Canvas)控件的方法


畫布(Canvas)控件的方法

所有的畫布對象都支持這些方法:
本文多次涉及顯示列表(Display list),請參見展示列表

.addtag_above(newTag, tagOrId)

將一個新標簽附加到顯示列表中由 tagOrId 指定的標簽上方的對象。newTag 參數是您要附加的標簽,一個字符串。

.addtag_all(newTag)

將給定的標簽 newTag 附加到畫布上的所有對象。

.addtag_below(newTag, tagOrId)

將一個新標簽附加到顯示列表中 tagOrId 指定的標簽正下方的對象。 newTag 參數是一個標簽字符串。

.addtag_closest(newTag, x, y, halo=None, start=None)

向最接近屏幕坐標 (x,y) 的對象添加標簽。 如果在相同距離處有兩個或更多對象,則選擇顯示列表中較高的一個。

使用 halo 參數來增加點的有效大小。 例如,值 5 會將 (x,y) 的 5 個像素內的任何對象視為重疊。

如果在 start 參數中傳遞了對象 ID,則此方法會標記顯示列表中低於 start 的最高合格對象。

.addtag_enclosed(newTag, x1, y1, x2, y2)

將標簽 newTag 添加到完全位於左上角為 (x1, y1) 且右下角為 (x2, y2) 的矩形內的所有對象。(對象必須完全在這個區域,才會受影響。)

.addtag_overlapping(newTag, x1, y1, x2, y2)

與前一種方法類似,但會影響與給定矩形至少共享一個點的所有對象。(只要對象有一部分在這個區域,就會受影響。)

.addtag_withtag(newTag, tagOrId)

將標簽 newTag 添加到 tagOrId 指定的一個或多個對象。

.bbox(tagOrId=None)

返回一個元組 (x1, y1, x2, y2),描述一個包含 tagOrId 指定的所有對象的矩形。 如果省略該參數,則返回一個包含畫布上所有對象的矩形。 矩形的左上角是 (x1, y1),右下角是 (x2, y2)。

.canvasx(screenx, gridspacing=None)

將窗口 x 坐標 screenx 轉換為畫布坐標。 如果提供了 gridspacing,則畫布坐標將四舍五入為該值的最接近倍數。

.canvasy(screeny, gridspacing=None)

將窗口 y 坐標 screeny 轉換為畫布坐標。 如果提供了 gridspacing,則畫布坐標將四舍五入為該值的最接近倍數。

.coords(tagOrId, x0, y0, x1, y1, ..., xn, yn)

如果僅傳遞 tagOrId 參數,則返回由該參數指定的最低或唯一對象的坐標元組。 坐標的數量取決於對象的類型。 在大多數情況下,它將是一個描述對象邊界框的 4 元組 (x1, y1, x2, y2)。

您可以通過傳入新坐標來移動對象。

.dchars(tagOrId, first=0, last=first)

從一個或多個文本項中刪除字符。 刪除 first 和 last 之間的字符,其中這些值可以是整數索引或字符串 'end' 表示文本的結尾。 例如,對於畫布 C 和 對象I ,C.dchars(I, 1, 1) 將刪除第二個字符。

.delete(tagOrId)

刪除由 tagOrId 選擇的一個或多個對象。 如果沒有與 tagOrId 匹配的項目,則不會被視為錯誤。

.dtag(tagOrId, tagToDelete)

從 tagOrId 指定的一個或多個對象中移除 tagToDelete 指定的標簽。

.find_above(tagOrId)

返回由 tagOrId 指定的對象正上方的對象的 ID 號。 如果多個對象匹配,您將獲得最高的一個。 如果您將最高對象的對象 ID 傳遞給它,則返回一個空元組。

.find_all()

返回畫布上所有對象的對象 ID 編號列表,從最低到最高。

.find_below(tagOrId)

返回由 tagOrId 指定的對象的對象 ID。 如果多個對象匹配,您將獲得最低的一個。 如果您將最低對象的對象 ID 傳遞給它,則返回一個空元組。

.find_closest(x, y, halo=None, start=None)

返回一個包含最接近點 (x, y) 的對象的對象 ID 的單例元組。 如果沒有符合條件的對象,則返回一個空元組。

使用 halo 參數來增加點的有效大小。 例如,halo=5 將 (x, y) 的 5 個像素內的任何對象視為重疊。

如果對象 ID 作為 start 參數傳遞,則此方法返回顯示列表中低於 start 的最高合格對象。

.find_enclosed(x1, y1, x2, y2)

返回完全出現在左上角為 (x1, y1) 右下角為 (x2, y2) 的矩形內的所有對象的對象 ID 列表。

.find_overlapping(x1, y1, x2, y2)

與前一種方法類似,但返回與給定矩形至少共享一個點的所有對象的對象 ID 列表。

.find_withtag(tagOrId)

返回由 tagOrId 指定的一個或多個對象的對象 ID 列表。

.focus(tagOrId=None)

將焦點移動到 tagOrId 指定的對象。 如果有多個這樣的對象,將焦點移到顯示列表中允許插入光標的第一個。 如果沒有符合條件的項目,或者畫布沒有焦點,則焦點不會移動。

如果省略參數,則返回具有焦點的對象的 ID,如果沒有,則返回 ''

.gettags(tagOrId)

如果 tagOrId 是對象 ID,則返回與該對象關聯的所有標簽的列表。 如果參數是標簽,則返回具有該標簽的最低對象的所有標簽

.icursor(tagOrId, index)

假設所選項目允許文本插入並具有焦點,將插入光標設置為 index,它可以是整數索引或字符串 'end'。 其他沒有影響

.index(tagOrId, specifier)

返回由 tagOrId 指定的文本項中給定說明符的整數索引(如果 tagOrId 指定多個對象,則是最低的一個)。返回值是作為整數的相應位置,按照通常的 Python 約定,其中 0 是第一個字符之前的位置。

說明符參數可以是以下任何一項:

tk.INSERT,返回插入光標的當前位置。

tk.END,返回項目最后一個字符后的位置。

tk.SEL_FIRST,返回當前文本選擇的開始位置。如果文本項當前不包含文本選擇,Tkinter 將引發 tk.TclError 異常。

tk.SEL_LAST,返回當前文本選擇結束后的位置,或者如果項目當前不包含選擇,則引發 tk.TclError。

“@x,y”形式的字符串,返回包含畫布坐標 (x, y) 的字符的字符。如果這些坐標位於文本項的上方或左側,則該方法返回 0;如果坐標位於項目的右側或下方,則該方法返回項目末尾的索引。

.insert(tagOrId, specifier, text)

將給定的字符串插入到 tagOrId 指定的一個或多個對象中,在 specifier 參數給定的位置。

說明符值可能是:

任何關鍵字 tk.INSERT、tk.END、tk.SEL_FIRST 或 tk.SEL_LAST。 這些代碼的解釋請參考上面索引方法的說明。

所需插入的位置,使用字符串中位置的正常 Python 約定。

.itemcget(tagOrId, option)

返回所選對象中給定配置選項的值(如果 tagOrId 指定了多個,則返回最低對象)。 這類似於 Tkinter 對象的 .cget() 方法。

.itemconfigure(tagOrId, option, ...)

如果沒有提供選項參數,則返回一個字典,其鍵是 tagOrId 指定的對象的選項(最低的一個,如果 tagOrId 指定了多個對象)。

要更改指定項的配置選項,請提供一個或多個格式為 option=value 的關鍵字參數。

.move(tagOrId, xAmount, yAmount)

通過將 xAmount 添加到它們的 x 坐標並將 yAmount 添加到它們的 y 坐標來移動 tagOrId 指定的項目。

.postscript(option, ...)

生成畫布當前內容的封裝 PostScript 表示。 選項包括:

參數 描述
colormode 使用 'color' 進行彩色輸出,使用 'gray' 進行灰度輸出,或使用 'mono' 進行黑白輸出。
file 如果提供,則命名將寫入 PostScript 的文件。 如果未給出此選項,則 PostScript 將作為字符串返回。
height 要打印的畫布 Y 尺寸的多少。 默認是畫布的整個可見高度。
rotate 如果為 false,頁面將以縱向呈現; 如果是真的,在風景中。
x 要打印的區域的最左側畫布坐標。
y 要打印的區域的最頂部畫布坐標。
width 要打印的畫布 X 尺寸的多少。 默認是畫布的可見寬度。
.scale(tagOrId, xOffset, yOffset, xScale, yScale)

根據它們與點 P=(xOffset, yOffset) 的距離縮放所有對象。 比例因子 xScale 和 yScale 基於值 1.0,這意味着沒有縮放。 移動由 tagOrId 選擇的對象中的每個點,使其與 P 的 x 距離乘以 xScale,其 y 距離乘以 yScale。

此方法不會更改文本項的大小,但可能會移動它。

.scan_dragto(x, y, gain=10.0)

請參閱下面的 .scan_mark() 方法。

.scan_mark(x, y)

該方法用於實現畫布的快速滾動。 目的是用戶將按住鼠標按鈕,然后向上移動鼠標以在該方向上水平和垂直掃描(滾動)畫布,其速度取決於自按下鼠標按鈕后鼠標移動了多遠 .

要實現此功能,請將鼠標的按鈕按下事件綁定到調用 scan_mark(x, y) 的處理程序,其中 x 和 y 是當前鼠標坐標。 將 事件綁定到一個處理程序,假設鼠標按鈕仍然按下,則調用 scan_dragto(x, y, gain) 其中 x 和 y 是當前鼠標坐標。

增益參數控制掃描速率。 此參數的默認值為 10.0。 使用更大的數字以加快掃描速度。

.select_adjust(oid, specifier)

在對象 ID 為 oid 的文本項中,調整當前文本選擇的邊界以包括說明符參數給定的位置。

當前選擇錨點也設置到指定位置。 有關選擇錨點的討論,請參閱下面的畫布 select_from 方法。

關於說明符的值,請參見上面的畫布插入方法。

.select_clear()

刪除當前文本選擇(如果已設置)。 如果沒有當前選擇,則不執行任何操作。

.select_from(oid, specifier)

此方法將選擇錨點設置為說明符參數給定的位置,在其對象 ID 由 oid 給出的文本項中。

給定畫布上當前選定的文本由三個位置指定:開始位置、結束位置和選擇錨點,可以在這兩個位置內的任何位置。

要更改當前選定文本的位置,請將此方法與 select_adjust、select_from 和 select_to 畫布方法 (q.v.) 結合使用。

.select_item()

如果此畫布上有當前文本選擇,則返回包含該選擇的文本項的對象 ID。 如果沒有當前選擇,則此方法返回 None。

.select_to(oid, specifier)

此方法更改當前文本選擇,使其包括選擇錨點和說明符在文本項中指定的位置,文本項的對象 ID 由 oid 給出。 關於說明符的值,請參見上面的畫布插入方法。

.tag_bind(tagOrId, sequence=None, function=None, add=None)

將事件綁定到畫布上的對象。 對於 tagOrId 選擇的一個或多個對象,將處理函數與事件序列相關聯。 如果 add 參數是一個以“+”開頭的字符串,則新綁定將添加到給定序列的現有綁定中,否則新綁定將替換給定序列的綁定。

有關事件綁定的一般信息,請參閱“事件”。

請注意,在調用 tag_bind 方法時,綁定應用於具有此標記的項目。 如果稍后從這些項目中刪除標簽,則綁定將保留在這些項目上。 如果您指定的標簽稍后應用於調用 tag_bind 時沒有該標簽的項目,則該綁定將不會應用於新標記的項目。

.tag_lower(tagOrId, belowThis)

將顯示列表中由 tagOrId 選擇的一個或多個對象移動到由下面的標簽或 ID 指定的第一個或唯一一個對象正下方的位置。

如果有多個帶有標簽 tagOrId 的項目,則保留它們的相對堆疊順序。

此方法不影響畫布窗口項。 要更改窗口項目的堆疊順序,請在窗口上使用降低或提升方法。

.tag_raise(tagOrId, aboveThis)

將顯示列表中由 tagOrId 選擇的一個或多個對象移動到由上面的標簽或 ID 指定的第一個或唯一一個對象正上方的位置。

如果有多個帶有標簽 tagOrId 的項目,則保留它們的相對堆疊順序。

此方法不影響畫布窗口項。 要更改窗口項目的堆疊順序,請在窗口上使用降低或提升方法。

.tag_unbind(tagOrId, sequence, funcId=None)

從由 tagOrId 指定的畫布對象或對象中移除處理程序 funcId 和事件序列的綁定。 請參見“事件”。

.type(tagOrId)

返回由 tagOrId 指定的第一個或唯一對象的類型。 返回值將是字符串“arc”、“bitmap”、“image”、“line”、“oval”、“polygon”、“rectangle”、“text”或“window”之一。

.xview(tk.MOVETO, fraction)

此方法相對於其圖像滾動畫布,旨在綁定到相關滾動條的命令選項。 畫布水平滾動到偏移指定的位置,其中 0.0 將畫布移動到最左邊的位置,1.0 移動到最右邊的位置。

.xview(tk.SCROLL, n, what)

此方法向左或向右移動畫布:what 參數指定移動多少,可以是 tk.UNITS 或 tk.PAGES,n 表示相對於其圖像向右移動畫布多少個單位(或向左, 如果為負)。

tk.UNITS 移動的大小由畫布的 xscrollincrement 選項的值給出; 請參閱“滾動條小部件”。

對於 tk.PAGES 的動作,n 乘以畫布寬度的十分之九。

.xview_moveto(fraction)

此方法以與 .xview(tk.MOVETO, fraction) 相同的方式滾動畫布。

.xview_scroll(n, what)

與 .xview(tk.SCROLL, n, what) 相同。

.yview(tk.MOVETO, fraction)

.xview(tk.MOVETO,...) 的垂直滾動等效項。

.yview(tk.SCROLL, n, what)

.xview(tk.SCROLL,...) 的垂直滾動等效項。

.yview_moveto(fraction)

.xview() 的垂直滾動等效項。

.yview_scroll(n, what)

.xview()、.xview_moveto() 和 .xview_scroll() 的垂直滾動等效項。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM