我是python的新手,想要从基础知识中学到这一点。 我想在一个窗口中打开另外两个应用程序,如记事本。我使用“tkinter”搜索了任何例子。任何想法使用“tkinter”实现这一点。
PS:两个标签左边一个,右边一个标签,一个标签有记事本,其他标签有媒体播放器(比如说),我应该可以关闭单个父窗口关闭这个子窗口。
答案 0 :(得分:0)
根据您的需要,您必须使用tkinter或pyqt等库。由于你想从基础学习它,我建议你选择一个GUI库并开始学习它。最终你会知道如何获得你想要的结果。
答案 1 :(得分:0)
我认为你不能轻易做到这一点。记事本使用自己的工具包,很可能与您正在使用的工具包不兼容。
如果你想打开例如。编辑器,在您选择的工具箱中查找一个小部件,它可以完成您想要的(或接近)。例如。如果你想要一个编辑器,可以在GTK中使用GtkTextView,或者,如果你想要一些可以进行代码编辑的东西,可以查看GtkSourceView等。媒体应用也是如此。
'包括'作为项目一部分的应用程序仅适用于某一点。您可以例如,在终端窗口中包含文本模式应用程序,但图形应用程序要困难得多。
答案 2 :(得分:0)
在具有X服务器的Unix系统上,XEmbed协议存在用于此目的,但它需要专门为此准备子应用程序(这里是相关的question)。
在Windows上,这可以使用Win32 API完成。您必须获取父窗口和子窗口的句柄并使用SetParent
函数。
以下是概念证明:
from tkinter import Tk
from win32gui import SetParent, FindWindow, SetWindowPos
import time
import subprocess
def attach_window(window_class, parent, x, y, width, height):
child = FindWindow(window_class, None)
SetParent(child, parent)
SetWindowPos(child, 0, x, y, width, height, 0)
def main():
root = Tk()
subprocess.Popen('C:\\Windows\\system32\\notepad.exe')
subprocess.Popen('C:\\Windows\\system32\\calc.exe')
# Give child processes enough time to launch
time.sleep(0.5)
# Get the HWND of the parent window
parent = int(root.frame(), 16)
attach_window('Notepad', parent, 0, 0, 400, 200)
attach_window('CalcFrame', parent, 0, 205, 420, 320)
root.geometry('500x500')
root.mainloop()
if __name__ == '__main__':
main()
请注意,您必须安装PyWin32才能使用此功能。