“Tkinter” is a widely-used GUI (Graphical User Interface) toolkit for Python. It provides a set of classes and functions that enable developers to create desktop applications with user-friendly graphical interfaces. One important aspect of GUI development is the ability to customize the appearance of text by using various “fonts“.
What are tkinter Fonts in Python?
The “TkFont” class is part of the “tkinter” module that enables the creation and management of “fonts” for text display in GUIs.
By importing the “tkFont” module, and using the “Font()” class constructor in the tkFont module, you can create a “font object“:
font = tkFont.Font ( option, ... )
Its syntax involves importing the module as “tkFont” and utilizing functions such as “Font()”, “configure()”, and “family()” to interact with “fonts“.
Attributes of “Font” Class
The “fonts” module in tkinter provides a Font class that represents a font object. This class has several attributes, such as family, size, weight, slant, and underline, which can be modified to change the appearance of text. These attributes are as follows:
- The “family” attribute specifies the font family, such as Arial or Times New Roman.
- The “size” attribute determines the font size in points.
- The “weight” attribute can be used to make the text bold.
- The “slant” attribute can make it italicized.
- The “underline” attribute, as the name suggests, enables the underlining of the text. These attributes can be altered to create different font styles and effects, allowing developers to deliver visually appealing graphical interfaces.
How to Use the Fonts Module?
To use the “font” module in a “tkinter” application, the first step is to import it using the below-given statement:
After importing the module, an instance of the “Font” class can be created by invoking the “Font()” constructor, passing the desired font attributes as arguments. This “Font” object can then be associated with a text element, such as a label or a button, using the “font” attribute of the respective widget.
For example, to create a label with a font size of “14” and a “bold” weight, we can define a “Font” object as shown:
We can then associate this font object with a label using the attribute “font=Custom_font“. This label will now display text with the specified font style.
Now let’s consider the full code example:
import tkinter.font
root = tkinter.Tk()
root.title("Linuxhint")
root.geometry("918x450")
sample_text=tkinter.Text( root, height = 10)
sample_text.pack()
Custom_font = "tkinter".font.Font( family = "Comic Sans MS", size = 20, weight = "bold")
sample_text.configure(font = Custom_font)
root.mainloop()
In the above code:
- The window is first titled “Linuxhint” and is “918×450” pixels in size.
- The window is filled with a Text widget that has a 10-line height. The “tkinter.font” module is used to define a custom font with the font family “Comic Sans MS“, size 20, and weight “bold“, respectively.
- The “configure()” method is then utilized to apply the custom font to the text widget. The main event loop is then initiated, enabling the GUI window to be shown and used.
Output
Now if we write something in this text box, it will be in our custom “font”, demonstrated below:
In addition to creating custom “fonts“, “tkinter” also provides predefined font families, such as “Helvetica” and “Courier“, that can be used without explicitly creating a Font object. These predefined “fonts” can be accessed using the “font.families()” method, which returns a list of available font families on the system.
When using “fonts” in “tkinter“, it is important to note that not all font attributes are supported across different operating systems. Therefore, it is recommended to test the application on different systems to ensure consistent font rendering.
Conclusion
Tkinter “tkFont” module is an indispensable resource for developers seeking to create expressive and visually striking graphical user interfaces. By creating and modifying Font objects, developers can easily change font families, sizes, weights, slants, and underlines to create visually appealing interfaces.