@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 в окно стороннего приложения.