2013-05-19 38 views
0

帆布當你打電話的Tkinter的畫布,你定義的高度和寬度:調用的Tkinter與位置

w = Canvas(master, width=ScreenWidth, height=ScreenHeight) 

要做到這一點,我第一次得到了用戶的屏幕分辨率,然後使用該高度和寬度。 不過,在Windows系統上,這與任務欄重疊。所以我試圖通過縮短身高來彌補這一點。不幸的是,Canvas是從底部定義的,所以這只是將畫布的頂部向下切開,而不是從底部開始。理想情況下,我會簡單地在整個畫布上切割整個任務欄大小的塊,以說明將任務欄放置在其他位置的用戶。

有沒有辦法調用畫布的位置,以便我可以將它從Windows操作系統中的任務欄偏移(或解決任務欄重疊的一般問題的另一個解決方案)?

注:我曾嘗試:

w.pack(side="top") 

,似乎下面類似的問題並沒有幫助我的情況

Positioning Canvas in window - Tkinter/python

+0

你是什麼意思「Casvas從下定義」是什麼意思?這是沒有意義的。大小與屏幕上的位置無關。 –

+0

我基於bheavior的假設是,它將畫布的左下角放置在屏幕的左下角。我認爲這是因爲當我定義一個較小的高度時,它縮小了自上而下,而不是自下而上。 –

+0

我可以看到你如何得出這個結論,但這是一個不正確的假設。 Tkinter不會在頂部,底部,左側或右側「移除」或「添加」。大小隻是一個大小,而不是相對於任何東西。如何以及在何處放置容器,以及如何管理該容器將決定它出現在屏幕上的哪個位置。您可能有一個窗口管理器,默認情況下會將每個新窗口置於屏幕較低的位置。 –

回答

2

沒有辦法到畫布上相對的地方屏幕上的任何位置,本身。畫布不是一個獨立的窗口。你所能做的就是把它放在相對於它包含窗口的地方。

但是,必須在使用該方法geometry最上面的窗口(任一的Toplevel的實例,或者的Tk一個實例)的絕對控制。該方法允許您指定窗口的寬度和高度,以及窗口在屏幕上的位置。因此,如果您試圖在特定位置放置畫布,則必須將窗口放在該位置,然後確保畫布填滿窗口。

+0

完美,謝謝。關於未來的n00bs,幾何方法需要一個特殊格式的字符串,在這裏定義[這裏],而不是一個參數列表。 –

0

要在中鋒位置上它,因爲@Bryan奧克利表示,用線沿線的東西:

# note: 'master' is a tk.Toplevel() or a tk.Tk() 

w = Canvas(master, width=ScreenWidth, height=ScreenHeight) 
w.pack() 

master.geometry("+{xPos}+{yPOS}".format(xPos = 0, yPos = 0))