Python 3 Tkinter Splashscreen - PullRequest
       26

Python 3 Tkinter Splashscreen

0 голосов
/ 25 января 2019

Я хотел добавить изображение, отображаемое в качестве заставки, прежде чем появится основная программа, но я не могу заставить его работать.

Я хочу, чтобы изображение центрировалось на мониторе, и ТОЛЬКО отображало изображение и ничего больше.

Мой код такой:

root = tk.Tk()
root.overrideredirect(True)
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
root.geometry('%dx%d+%d+%d' % (width*0.8, height*0.8, width*0.1, 
height*0.1))
image_file = "Flexbase.png"
image = tk.PhotoImage(file=image_file)
canvas = tk.Canvas(root, height=height*0.8, width=width*0.8, bg="brown")
canvas.create_image(width*0.8/2, height*0.8/2, image=image)
canvas.pack()
root.after(5000, root.destroy)
root.mainloop()

Что я делаю не так? Может кто-нибудь объяснить мне, как работает отображение изображения?

P.S .: Если эта информация поможет, само изображение имеет размер 640x160 и не имеет ничего прозрачного.

1 Ответ

0 голосов
/ 25 января 2019

Вопрос : я хочу, чтобы изображение центрировалось на мониторе, и ТОЛЬКО отображало изображение и ничего больше.

import tkinter as tk

root = tk.Tk()
root.overrideredirect(True)
width = root.winfo_screenwidth()
height = root.winfo_screenheight()

image_file = "Flexbase.png"
image = tk.PhotoImage(file=image_file)

  • Окно width и height должно быть равно image размеру

    x = int((width / 2) - (image.width() / 2))
    y = int((height / 2) - (image.height() / 2))
    geometry = '{}x{}+{}+{}'.format(image.width(), image.height(), x, y)
    
    root.geometry(geometry)
    
  • Нет , дальнейшая математика на canvas размере, canvas расширяется по умолчанию.

    canvas = tk.Canvas(root)
    
  • Поместите image в вверху / влево , используя anchor вверху / влево

    canvas.create_image(0,0, image=image, anchor='nw')
    

canvas.pack()

root.after(3000, root.destroy)
root.mainloop()

Протестировано на Python: 3,5

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