如何修改Tkinter代码,将文件内容从Toplevel窗口转移至主窗口显示
修改Tkinter代码,在主窗口显示文件内容
没问题,我帮你调整代码,让解析后的权限内容直接显示在主窗口root里,而不是弹出新的Toplevel窗口。下面是完整的可运行代码,我还补充了触发函数的按钮(原代码里缺少这部分,否则无法调用perm_file):
from tkinter import Tk, Listbox, Button from xml.dom.minidom import parseString root = Tk() root.title("Python") root.geometry("700x250") # 设置主窗口的初始大小 # 提前在主窗口创建Listbox控件,方便后续更新内容 perm_listbox = Listbox(root, height=600, width=650, bg="grey", activestyle="dotbox", font="Arial", fg="black") perm_listbox.pack() def perm_file(): # 先清空Listbox中的旧内容,避免多次点击后内容叠加 perm_listbox.delete(0, "end") with open('/home/prajwal/Desktop/GUI/music/AndroidManifest.xml','r') as f: data = f.read() dom = parseString(data) nodes = dom.getElementsByTagName('uses-permission') co = 0 for c, node in enumerate(nodes): co += 1 perm_listbox.insert(c, node.getAttribute('android:name')) # 在列表顶部插入权限计数 perm_listbox.insert(0, f'Count = {co}') # 添加按钮,点击后触发权限解析和显示 Button(root, text="加载并显示权限", command=perm_file).pack(pady=5) root.mainloop()
关键修改点说明:
- 移除Toplevel窗口:删掉了
top = Toplevel()和top.geometry()相关代码,直接把Listbox的父组件设为主窗口root。 - 提前创建Listbox:在主窗口初始化时就创建好Listbox并完成布局,这样每次调用
perm_file时只需更新内容,不用重复创建控件。 - 清空旧内容:在函数开头添加
perm_listbox.delete(0, "end"),确保每次点击按钮都会刷新内容,不会和之前的结果叠加。 - 补充触发按钮:原代码没有触发
perm_file的入口,我添加了一个按钮,让你可以直观地触发文件解析和显示操作。
内容的提问来源于stack exchange,提问作者Prajwal
相关产品推荐
相关产品推荐

