🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.tcl
Article #156

Re: Tk - centrowanie głównego okna

#156
From: Googie
Date: Fri, 29 Jul 2005 09:26
51 lines
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-mail
References: <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