Центрировать изображение при изменении размера - PullRequest
0 голосов
/ 28 февраля 2020

Работая с Tkinter, мне нужно центрировать сущности. При попытке центрировать метки, он будет центрироваться только в первом ряду, а не в окне.

Я хочу, чтобы он центрировался во всем окне. то есть середина. Пока что это только середина вершины. это возможно?

Спасибо.

from tkinter import *
from tkinter import ttk
from PIL import ImageTk, Image

root = Tk()

# New window, but text appears in the center of the center (the absolute center).
def whatsup():
    popup = Tk()
    popup.title("Cadillac")
    frame = Frame(popup)
    frame.pack()

    label = ttk.Label(frame, text="Wanna ride in my Cadillac?")
    label.pack()

root.title("I Love You")

# 1, 1
button = Button(root, text="Ayo girl", command=whatsup)
button.pack(side=LEFT)

# 1, 2, but to be 2, 2 soon after addition of new items.
canvas = Canvas(root, height=250, width=200)
imageOfCatherine=ImageTk.PhotoImage(Image.open('ccr_on_moon.jpg'))
canvas.create_image(-160, -100, anchor=NW, image=imageOfCatherine)
canvas.pack()

root.mainloop()

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

После некоторой обработки (без каламбура) я добавил expand=YES к frame.pack() в функции whatsup().

def whatsup():
    popup = Tk()
    popup.title("Cadillac")
    frame = Frame(popup)
    frame.pack(expand=YES) # This was the changed line!

    label = ttk.Label(frame, text="Wanna ride in my Cadillac?")
    label.pack()

Это позволяет всплывающему тексту центрироваться.

0 голосов
/ 28 февраля 2020

Вы можете использовать grid вместо pack, с rowconfigure и columnconfigure такими методами:

from tkinter import *
from tkinter import ttk
from PIL import ImageTk, Image

root = Tk()
root.title("I Love You")

# New window, but text appears in the center of the center (the absolute center).
def whatsup():
    popup = Tk()
    popup.title("Cadillac")
    frame = Frame(popup)
    frame.pack()

    label = ttk.Label(frame, text="Wanna ride in my Cadillac?")
    label.pack()

# 1, 1
button = Button(root, text="Ayo girl", command=whatsup)
button.grid(row=0, column=0, sticky='w')

# 1, 2, but to be 2, 2 soon after addition of new items.
canvas = Canvas(root, height=250, width=200)
imageOfCatherine=ImageTk.PhotoImage(Image.open('ccr_on_moon.jpg'))
canvas.create_image(-160, -100, anchor=NW, image=imageOfCatherine)
canvas.grid(row=1, column=1)
root.rowconfigure([0,1,2], weight=1)
root.columnconfigure([0,1,2], weight=1)

root.mainloop()

Ответ на комментарий

Это также работает, но не по центру:

from tkinter import *
from tkinter import ttk
from PIL import ImageTk, Image

root = Tk()
root.title("I Love You")

# New window, but text appears in the center of the center (the absolute center).
def whatsup():
    popup = Tk()
    popup.title("Cadillac")
    frame = Frame(popup)
    frame.pack()

    label = ttk.Label(frame, text="Wanna ride in my Cadillac?")
    label.pack()

# 1, 1
button = Button(root, text="Ayo girl", command=whatsup)
button.grid(row=0, column=0, sticky='w')

# 1, 2, but to be 2, 2 soon after addition of new items.
canvas = Canvas(root, height=250, width=200)
imageOfCatherine=ImageTk.PhotoImage(Image.open('ccr_on_moon.jpg'))
canvas.create_image(-160, -100, anchor=NW, image=imageOfCatherine)
canvas.grid(row=0, column=1, sticky='')

root.rowconfigure(0, weight=1)
root.columnconfigure([0,1], weight=1)

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...