#python #tkinter #icons
#python #tkinter #Значки
Вопрос:
когда я открывал свое окно верхнего уровня, я всегда видел раздражающее и странное поведение .. в конце я понял, что это из-за моего пользовательского значка.
ниже приведен примерный код:
from tkinter import *
from tkinter import ttk
class MainWindow:
def __init__(self):
self.parent=Tk()
self.parent.geometry("494x410 370 100")
self.parent.title("My Software - WITH ICON")
self.parent.iconbitmap("icon.ico")
Button = ttk.Button(self.parent, text="open a new widnow", command=self.OpenNewWindow)
Button.place(x=16, y=16)
def OpenNewWindow(self):
self.obj = NewWindow(self)
class NewWindow:
def __init__(self, mw):
self.window, self.mw = Toplevel(mw.parent), mw
self.window.geometry("200x150 360 200")
self.window.title("New Window")
self.window.iconbitmap("icon.ico") # it creates the issue..
self.window.protocol("WM_DELETE_WINDOW", self.on_close)
self.window.focus()
self.mw.parent.attributes('-disabled', 1)
self.window.transient(mw.parent)
self.window.grab_set()
self.mw.parent.wait_window(self.window)
def on_close(self):
self.mw.parent.attributes('-disabled', 0)
self.window.destroy()
def main():
app=MainWindow()
app.parent.mainloop()
if __name__=="__main__":
main()
чтобы было ясно, в чем проблема, я создаю GIF:
здесь у нас есть два программного обеспечения, «без icon.py » и «с icon.py «. они одинаковые, но первый не использует мой пользовательский значок для своего второго окна.
как вы можете видеть, если я запускаю «с icon.py «на второе окно всегда будет что-то влиять, когда я его открою, но для «без icon.py «это «что-то» не существует.
в чем проблема? программное обеспечение открывает свое второе окно, фокусирует корневое (это проблема), а затем снова фокусирует второе окно. вы можете ясно видеть это из GIF.
как я могу решить проблему? и почему со значком по умолчанию это странное поведение не происходит?
Комментарии:
1. У вас все еще есть та же проблема после комментирования
self.window.transient(mw.parent)
?2. мм .. хороший вопрос. без
self.window.transient(mw.parent)
инструкции проблема кажется решаемой, но таким образом мое второе окно больше не мигает, когда я пытаюсь щелкнуть по родительскому. имейте в виду, что со значком по умолчанию мне не нужно удалять эту инструкцию.