2008-09-21 50 views

回答

2

對您的具體問題的答案是否定的。你不能有兩種狀態或以其他方式在同一父母中使用兩種不同的方式。

但是,你要完成什麼,我覺得很簡單。使用畫布的內置功能創建作爲畫布一部分的圖像項目,然後將其作爲畫框包裝到畫布中。

您可以通過創建圖像的標籤控件完成類似的事情,然後收拾你的其他部件入標籤。

使用畫布的一個優點是您可以輕鬆地平鋪圖像以填充重複背景圖像的整個畫布,因此隨着窗口的增大,圖像將繼續填充窗口(當然,您可以使用足夠大的原始圖像...)

+0

我喜歡你的答案 - 你對所有事情都絕對正確 - 除非整個方法變得行不通,因爲我想爲它添加標籤和更多的畫布,但是我找不到任何方法使它們的背景變得透明。你碰巧知道任何方式? – 2008-09-22 02:29:55

+0

我不太瞭解這個問題,以至於無法回答你的問題。目前還不清楚爲什麼你需要做出任何透明的事情。例如,將畫布添加到畫布有什麼意義?很有可能你想完成的事情是可能的,只是可能不符合你的想法。 – 2008-09-30 18:36:28

1

我相信,布萊恩的回答可能是最好的通用解決方案。但是,您可能還需要查看幾何管理器place的地方幾何管理器讓你指定小部件的確切大小和位置......它可以很快變得乏味,但會完成工作。

0

並非沒有交換部件的樹木和出,我不認爲可以乾淨地Tk的完成。其他工具包可以更優雅地做到這一點。

  • COM/VB/MFC可以通過一個ActiveX控件來實現 - 您可以在同一個區域隱藏/顯示多個ActiveX控件。任何容器都會讓你通過改變周圍的孩子來做到這一點。如果你正在做一個特定於Windows的程序,你可以通過這種方式來完成。
  • QT也會讓你以類似的方式做到這一點。
  • GTK稍微有些困難。
+0

我不確定你的意思是「交換部件樹進出」。如果您認爲堆疊小部件和提升或降低佔據相同空間的小部件,Tk可以做到這一點。也許那不是你的意思。 – 2008-09-21 23:20:40

1

...竟然是行不通的,因爲我想標籤和更多的畫布添加到它,但我找不到任何方式讓自己的背景透明

如果是可以加載額外的分機,請看Tkzinc。從網站,

Tkzinc(歷史上稱爲鋅)部件是非常相似的Tk的畫布,它們都支持結構化的圖形。像Canvas一樣,Tkzinc實現用於顯示圖形實體的項目。這些項目可以被操縱,綁定可以與它們相關聯以實現交互行爲。但與Canvas不同的是,Tkzinc可以在層次結構中構造項目,支持縮放和旋轉,可以爲項目層次結構的子樹設置裁剪,支持多條輪廓曲線。它還提供了藉助OpenGL的高級渲染,如顏色漸變,抗鋸齒,透明度和三角形項目。

我目前在一個tcl項目上使用它,並且對結果很滿意。可以使用tcl,perl和python的擴展。

相關問題