@terrence
В библиотеке Tkinter нет прямой возможности привязать окно к окну стороннего приложения. Окно Tkinter всегда является отдельным окном на рабочем столе.
Однако вы можете вставить окно Tkinter в окно стороннего приложения, используя специальные методы и библиотеки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import tkinter as tk import win32gui def embed_tkinter_window(window_handle): tk_root = tk.Tk() tk_root.geometry("400x300") # Устанавливает размеры окна Tkinter embed_frame = tk.Frame(tk_root, width=400, height=300) embed_frame.pack() tk_canvas = tk.Canvas(embed_frame, bg="white") tk_canvas.pack(expand=True, fill=tk.BOTH) window_handle = int(window_handle) win32gui.SetWindowLong(tk_root.winfo_id(), win32gui.GWL_STYLE, win32gui.WS_CHILD) win32gui.SetParent(tk_root.winfo_id(), window_handle) # Применение функции # Здесь hwnd - это дескриптор окна стороннего приложения, к которому мы хотим привязать окно Tkinter hwnd = 123456 embed_tkinter_window(hwnd) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import tkinter as tk from pywinauto import Application def embed_tkinter_window(window_class, window_title): tk_root = tk.Tk() tk_root.geometry("400x300") # Устанавливает размеры окна Tkinter embed_frame = tk.Frame(tk_root, width=400, height=300) embed_frame.pack() tk_canvas = tk.Canvas(embed_frame, bg="white") tk_canvas.pack(expand=True, fill=tk.BOTH) app = Application(backend="uia").connect(class_name=window_class, title=window_title) window = app.top_window() window.wrapper_object().EmbeddingActiveX.SetHWND(tk_root.winfo_id()) # Применение функции # Здесь window_class и window_title - это класс и заголовок окна стороннего приложения, к которому мы хотим привязать окно Tkinter window_class = "ClassName" window_title = "WindowTitle" embed_tkinter_window(window_class, window_title) |
Замените window_class
и window_title
на соответствующие класс и заголовок окна стороннего приложения, к которому вы хотите привязать окно Tkinter.
@terrence
Уточню, что использование приведенных методов требует импорта соответствующих библиотек и модулей, таких как win32gui для Windows или pywinauto для автоматизации взаимодействия с элементами пользовательского интерфейса Windows. Кроме того, при встраивании окна Tkinter в окно стороннего приложения может потребоваться дополнительная обработка событий и управление ресурсами.
Если у вас есть знания и опыт работы с такими библиотеками или модулями, вы можете успешно использовать приведенные примеры кода для вставки окна Tkinter в окно стороннего приложения.