Я заранее извиняюсь, если мой вопрос дублируется, однако я не нашел ответа на этот вопрос.
Я изучаю Tkinter и пытаюсь понять связь между типом шрифта метки,его размер, ширина и длина строки в нем.
В частности, в чем моя проблема:
- Я создал виджет: холст 800x640, на котором я хочуРазместите другие виджеты.
- На этом холсте я хочу разместить ярлык с текстом, который имеет следующие атрибуты: font: Helvetica, размер шрифта: 20, text = "main application".Я хочу разместить этот виджет надписи в самом верхнем левом углу виджета (то есть в точке 0,0 относительно холста).Я хочу, чтобы ширина метки составляла 200, а это означает, что фон занимает почти 1/3 размера холста (после того, как мне удастся это сделать, я планирую добавить еще 2 метки).Я думаю, высота метки определяется размером шрифта в этом случае 20. Я поместил метку в координату y = 20, и эта координата, кажется, в порядке.
Я немного погуглил и обнаружил, что параметр ширины виджета надписи - это не фактическая ширина, а что-то, связанное со шрифтом и размером текста надписи: что-то вроде, если я правильно понял: еслиширина на 6 больше, чем метка будет достаточно широкой, чтобы содержать 6 символов, в моем случае это размер verdana 20. Но я не смог выяснить, какую ширину и какую координату х я должен дать своей метке, чтобы она начиналась в точке ххолста.Вот код, который я написал:
from tkinter import *
from tkinter.ttk import *
from tkinter import messagebox
from tkinter import Menu
# Define the application class where we will implement our widgets
class Application(Frame):
def __init__(self, master):
super(Application, self).__init__(master)
# CANVAS COLOUR DEFAULTS TO THE COLOUR OF THE WORKING WINDOW
canvas = Canvas(master, width=800, height = 640, bg="gray") # IF YOU DO .PACK() HERE IT WILL RETURN NONE AND THEN YOU WILL HAVE PROBLEMS BECAUSE .PACK() RETURNS A 'NONE' TYPE OBJECT
canvas.place(relx=0.5, rely=0.5, anchor=CENTER)
# The 'menu' of the application. The selection labels
main_application_label = Label(master, text="main_application", font=("Helvetica", 20))
main_application_window = canvas.create_window(103,20, window=main_application_label)
main_application = Tk()
main_application.title("main_application")
app = Application(main_application)
app_width = 800
app_height = 640
screen_width = main_application.winfo_screenwidth()
screen_height = main_application.winfo_screenheight()
x_coord = (screen_width/2) - (app_width/2)
y_coord = (screen_height/2) - (app_height/2)
main_application.geometry("%dx%d+%d+%d" % (app_width, app_height, x_coord, y_coord))
main_application.mainloop()
Мне удалось каким-то образом получить метку в точке 0,0 (давая больше значений, пока я не понял ее правильно), но фактическая ширина метки равнане 200 пикселей (~ 1/3 от холста).Пожалуйста, помогите мне понять, какие значения для параметра ширины я должен дать, чтобы фон моей метки составлял 1/3 от размера холста, и, если возможно, объясните связь между шрифтом символа и параметром ширины, чтобы я мог сделать это для любых виджетов независимо от их текста.длина.Спасибо за прочтение моего поста!
Редактировать: я хотел разместить на холсте 3 виджета (в данном случае это ярлыки, но это не имеет значения).Я не понимал, что делает опция «якорь», и это сбивало меня с толку, потому что я ожидал, что центр виджета будет все время размещаться по заданным координатам, но когда я менял якорь, расположение центра виджета менялосьи это меня смутило.Теперь все ясно, благодаря @Bryan Oakley.Благодаря.