TransWikia.com

Почему появляется главное окно при вызове massagebox?

Stack Overflow на русском Asked on December 14, 2021

from psutil import sensors_battery

a=sensors_battery()
a=a.percent
print('Текущее состояние батареи:', a)

low_baterry = input('Введите количество заряда при котором будет сигнал: ')

while True:
    try:
        low_baterry=int(low_baterry)
        break
    except ValueError:
        low_baterry = input('Введите число')


if low_baterry<=90 and low_baterry>=1:
    pass
elif low_baterry>90:
    print('Слишком много')
elif low_baterry<1:
    print('Слишком мало')
else:
    pass

from time import sleep
from tkinter import messagebox as mb

while True:
    b=sensors_battery()
    b=b.percent
    if b==low_baterry:
        mb.showerror("Внимание", "Количество заряда: "+str(low_baterry)+'%')
        break
    else:
        sleep(5)

При вызове меседжБокс появляется лишние главное окно, как убрать?
введите сюда описание изображения

One Answer

Можно при запуске программы принудительно создать главное окно, и сразу скрыть его (один раз). После этого при вызове messagebox главное окно появляться не будет.

import tkinter as tk
from tkinter import messagebox

root = tk.Tk()
root.withdraw()

for i in range(10):
    messagebox.showinfo("Title", "Text " + str(i))

Почему оно вообще появляется - скорее всего потому, что разработчики tkinter предполагали, что messagebox будет всегда дочерним к какому-то окну. Фактически главное окно создается при создании любого виджета. Например, если создать кнопку без создания родительского окна, кнопка не появится сама по себе без окна, а создастся окно, на котором появится эта кнопка. Даже если создать диалоговое окно Toplevel, то оно появится не одно, а вместе с главным окном (если главного окна до этого не было).

Answered by insolor on December 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP