You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:52:45