[Tkinter-discuss] Define height in a row of a grid manager

Vasilis Vlachoudis Vasilis.Vlachoudis at cern.ch
Sat Feb 4 05:16:01 EST 2017


Hi Michael,

I was just trying to reply to my self with the solution I've found, while I received your email :)
I was using the Canvas in the begging, but it was complicating quite my code, so I tried to avoid it.
However I found a solution maybe not the most elegant, but it works.
According to the documentation of tk label the "height" option is in text units unless if an image is
associated with the label, then it is in screen units. So I've created a dummy image of 1x1 pixels
as transparent gif and added it as image/text compound in the label see the code below.

import tkFont
from Tkinter import *

ONEPIXEL=r"R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="

def function(event=None):
	print time.winfo_geometry()
	print time.winfo_geometry()
	print date.winfo_geometry()

if __name__ == "__main__":
	tk=Tk()
	onepixel=PhotoImage(data=ONEPIXEL)
	timefont = tkFont.Font(family="Helvetica",size=-96)
	ascent = timefont.metrics()['ascent']
	print "ascent=",ascent

	time = Label(tk, text="10:21:46",
			image=onepixel,
			compound=LEFT,
			font=timefont,
			background="Yellow",
			height=ascent
			)
	time.grid(row=0, column=0, sticky=N+EW)
	time.bind("<1>", function)
	date = Label(tk, text="Sat 04 Feb 2017", font="Helevetica -25", background="Cyan")
	date.grid(row=1, column=0, sticky=NSEW)

	tk.grid_rowconfigure(0, minsize=10)
	tk.mainloop()
________________________________________
From: Tkinter-discuss [tkinter-discuss-bounces+vasilis.vlachoudis=cern.ch at python.org] on behalf of Michael Lange [klappnase at web.de]
Sent: Saturday, February 04, 2017 01:36
To: tkinter-discuss at python.org
Subject: Re: [Tkinter-discuss] Define height in a row of a grid manager

Hi,

On Fri, 3 Feb 2017 16:35:53 +0000
Vasilis Vlachoudis <Vasilis.Vlachoudis at cern.ch> wrote:

> Dear all,
>
> I am trying to optimize the screen space use in a small screen QVGA
> mounted on a RPi
>
> On the first row (using the grid manager) I display the time with big
> fonts. The space allocated for the row includes, correctly includes the
> descent of the font however in the case of numbers its an empty space.
> So its loosing a lot of useful screen space there.
>
> Is there a way to force the height of a single row in the grid manager
> to be equal to the font ascent only?

I am not entirely sure about this, but if I understand you correctly I
think that it might actually not be grid who consumes the "excess" space,
but the Label (or whichever) widget that you use to display the digits.
If this assumption is true, a workaround might be to use a Canvas of
pre-defined height instead and place the time-string with a pixel-sized
font into properly calculated coordinates.
I did not test this though, just a random thought :-)

Best regards

Michael


.-.. .. ...- .   .-.. --- -. --.   .- -. -..   .--. .-. --- ... .--. . .-.

The more complex the mind, the greater the need for the simplicity of
play.
                -- Kirk, "Shore Leave", stardate 3025.8
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss at python.org
https://mail.python.org/mailman/listinfo/tkinter-discuss


More information about the Tkinter-discuss mailing list