Python TKinter:根据下拉菜单中的文件名打开html文件

Python TKinter:根据下拉菜单中的文件名打开html文件,python,html,file,tkinter,Python,Html,File,Tkinter,我需要帮助如何打开html文件的基础上选定的文件名在我的下拉菜单 我的问题是: 当我运行我的代码时,它显示的界面如图所示。 当我单击ShowData时,它会直接转到另一个浏览窗口。它不会将我的html文件显示为附加图像。 我只是想,当我在下拉列表中选择一个html文件,然后单击“显示数据”,它就会打开我的html文件 提前谢谢 这是我的密码: 它只需要一个小小的更改,您需要将file://链接传递到浏览器以将其作为本地文件打开 否则,浏览器会自动认为文件名是服务器,因此,如果出现错误,它将无

我需要帮助如何打开html文件的基础上选定的文件名在我的下拉菜单

我的问题是:

当我运行我的代码时,它显示的界面如图所示。

当我单击ShowData时,它会直接转到另一个浏览窗口。它不会将我的html文件显示为附加图像。

我只是想,当我在下拉列表中选择一个html文件,然后单击“显示数据”,它就会打开我的html文件

提前谢谢

这是我的密码:


它只需要一个小小的更改,您需要将file://链接传递到浏览器以将其作为本地文件打开

否则,浏览器会自动认为文件名是服务器,因此,如果出现错误,它将无法打开它

固定部件def openfile_菜单::

def openfile_菜单: filename=file\u menu.get 在浏览器中打开\u链接=ffile://{os.path.joinfolder,filename} 在浏览器链接中打印打开 webbrowser.open在浏览器中打开链接 完整代码:

从tkinter进口* 从functools导入部分 导入操作系统 将tkinter作为tk导入 从tkinter导入ttk 将tkinter作为tk导入 从tkinter导入文件对话框,消息框,ttk 作为pd进口熊猫 导入网络浏览器 从webbrowser导入打开为openlink 导入URL库 def openfile_菜单: filename=file\u menu.get 在浏览器中打开\u链接=ffile://{os.path.joinfolder,filename} 在浏览器链接中打印打开 webbrowser.open在浏览器中打开链接 def清除数据: tv1.删除*tv1.get_子项 一无所获 folder=os.path.realpathr'C:\Users\Downloads\testing' filelist=[os.listdirfolder中fname的fname] master=tk.tk 大师级几何“1200x800” 船长,头衔“THB” 树视图框架 frame0=tk.LabelFramemaster,文本=章节,背景=浅灰色 frame0.placeheight=500,width=1200,rely=0.0,relx=0.0 optmenu=ttk.ComboxFrame0,value=filelist,state='readonly' optmenu.packfill='x' 按钮选择=tk.Buttonframe0,文本=显示数据, 宽度=15, 高度=2, 化合物=tk.CENTER, 命令=部分打开,选项菜单 按钮选择。placerelx=0.5,rely=0.5 按钮_选择。packside=tk.TOP 树视图框架 frame1=tk.LabelFramemaster,text=Data,background=淡蓝色 frame1.placeheight=500,width=1200,rely=0.2,relx=0.0 Treeview小部件 tv1=ttk.Treeviewframe1 tv1.placerelheight=1,relwidth=1将小部件的高度和宽度设置为其容器框架的100%。 treescrolly=tk.Scrollbarframe1,orient=vertical,command=tv1.yview命令意味着更新小部件的yaxis视图 treescrollx=tk.Scrollbarframe1,orient=horizontal,command=tv1.xview命令意味着更新小部件的xaxis视图 tv1.configurexscrollcommand=treescrollx.set,yscrollcommand=treescrolly.set将滚动条分配给Treeview小部件 packside=bottom,fill=x使滚动条填充Treeview小部件的x轴 treescrolly.packside=right,fill=y使滚动条填充Treeview小部件的y轴 主回路 *注意:但是,请记住,如果您打开一些不受浏览器支持的文件,他们可能会要求在您的计算机中使用其他应用程序打开。 示例:如果您尝试打开pdf


您的代码在open函数中名为webbrowser.openfilename,因此它是预期的结果。顺便说一句,不要将你的函数命名为Python的内置函数。你能帮我编辑代码吗?抱歉,我是pythonHTML文件中的新映像?你想在这里实现什么。我试图使用tkinter按钮在我的计算机中打开我的html文件。当我在下拉列表中选择我的html文件,然后单击“显示数据”,它将转到并打开我的html文件。不只是像上面的图片那样打开。如果你能在上图中看到,它只是打开浏览器,而不是打开我的html文件。你想实际显示html文件的原始源代码吗?然后使用文本小部件显示源代码,而不是使用webbrowser.openfilename。
from tkinter import *
from functools import partial
import os
import tkinter as tk
from tkinter import ttk
#import tkinter as tk
from tkinter import filedialog, messagebox, ttk
import pandas as pd
import webbrowser
from webbrowser import open as openlink
import urllib

def open(file_menu):
    filename = file_menu.get()
    webbrowser.open(filename)



def clear_data():
    tv1.delete(*tv1.get_children())
    return None



folder = os.path.realpath(r'C:\Users\Downloads\testing')
filelist = [fname for fname in os.listdir(folder)]

master = tk.Tk()
master.geometry('1200x800')
master.title('THB')

# Frame for TreeView
frame0 = tk.LabelFrame(master, text="Chapter",background="light grey")
frame0.place(height=500, width=1200, rely=0.0, relx=0.0)

optmenu = ttk.Combobox(frame0, values=filelist, state='readonly')
optmenu.pack(fill='x')

button_select = tk.Button(frame0, text="Show Data",
                          width=15,
                          height=2,
                          compound=tk.CENTER,
                          command=partial(open, optmenu))

button_select.place(relx=0.5, rely=0.5)
button_select.pack(side=tk.TOP)

# Frame for TreeView
frame1 = tk.LabelFrame(master, text="Data",background="light blue")
frame1.place(height=500, width=1200, rely=0.2, relx=0.0)


## Treeview Widget
tv1 = ttk.Treeview(frame1)
tv1.place(relheight=1, relwidth=1) # set the height and width of the widget to 100% of its container (frame1).

treescrolly = tk.Scrollbar(frame1, orient="vertical", command=tv1.yview) # command means update the yaxis view of the widget
treescrollx = tk.Scrollbar(frame1, orient="horizontal", command=tv1.xview) # command means update the xaxis view of the widget
tv1.configure(xscrollcommand=treescrollx.set, yscrollcommand=treescrolly.set) # assign the scrollbars to the Treeview Widget
treescrollx.pack(side="bottom", fill="x") # make the scrollbar fill the x axis of the Treeview widget
treescrolly.pack(side="right", fill="y") # make the scrollbar fill the y axis of the Treeview widget



master.mainloop()