Article View: pl.comp.lang.tcl
Article #156Re: Tk - centrowanie głównego okna
From: Googie
Date: Fri, 29 Jul 2005 09:26
Date: Fri, 29 Jul 2005 09:26
51 lines
2431 bytes
2431 bytes
Tu masz 2 procedury, ktore pewnie Ci sie przydadza:
#---------------------
proc center {path} {
update
set wd [winfo width $path]
set ht [winfo height $path]
set x [expr {([winfo screenwidth $path]-$wd)/2}]
set y [expr {([winfo screenheight $path]-$ht)/2}]
wm geometry $path +$x+$y
}
proc centerBy {path {parent {}}} {
update
if {$parent == ""} {
set sp [split $path .]
if {[llength $sp] > 2} {
set parent [join [lrange $sp 0 end-1] .]
} else {
set parent .
}
}
set sp [split [wm geometry $parent] +]
set px [lindex $sp 1]
set py [lindex $sp 2]
set wd [winfo width $path]
set ht [winfo height $path]
set x [expr {$px+([winfo width $parent]-$wd)/2}]
set y [expr {$py+([winfo height $parent]-$ht)/2}]
wm geometry $path +$x+$y
}
#----------------
Pierwsza centruje okno na srodku pulpitu. Jako argument podaje sie
sciezke/nazwe okna.
Druga centruje okno na srodku danego okna. Jako drugi argument podaje się to
okno. Jesli jednak drugi argument zostanie pominiety, to okno zostanie
wycentrowane względem głownego okna aplikacji Tcl.
Jest jedna wada: okna musza sie pokazac, zanim zostana ustawione w
odpowiednim miejscu (za co odpowiada komenda [update] na poczatku kazdej z
procedur). Jest to spowodowane tym, ze window manager potrafi okreslic
wymiary okien dopiero po ich pokazaniu, a wymiary te sa potrzebne do
wycentrowania. Podejrzewam, ze da sie ten problem ominac uzywajac [wm
withdraw], trzeba pokombinowac :)
--
Pozdrawiam!
Googie
Technical Details
Message-ID:
<dccsj1$rij$1@srv.cyf-kr.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!not-for-mailReferences:
<dca44h$k0d$1@sunnews.cern.ch>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!not-for-mail From: "Googie" <googie@no.spam.org> Newsgroups: pl.comp.lang.tcl Subject: Re: Tk - centrowanie głównego okna Date: Fri, 29 Jul 2005 11:26:38 +0200 Organization: Academic Computer Center CYFRONET AGH Lines: 53 Message-ID: <dccsj1$rij$1@srv.cyf-kr.edu.pl> References: <dca44h$k0d$1@sunnews.cern.ch> NNTP-Posting-Host: tatanka.veranet.pl X-Trace: srv.cyf-kr.edu.pl 1122629025 28243 195.214.216.6 (29 Jul 2005 09:23:45 GMT) X-Complaints-To: news@cyf-kr.edu.pl NNTP-Posting-Date: Fri, 29 Jul 2005 09:23:45 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit