调整大小时将图像居中

时间:2020-02-28 09:00:37

标签: python tkinter

与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 :(得分:0)

您可以使用gridpack这样的方法来使用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()

答案 1 :(得分:0)

经过一些修修补补(没有双关语),我在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()

这允许弹出文本居中。

相关问题