python-tk-实时显示日志+滚动条

import tkinter
import logging

class LoggerBox(tkinter.Text):
    """
    日志框

    """
    def write(self, message):
        self.insert("end", message)

def add_log(master):
    fm = tkinter.Frame(master=master)
    fm.pack()


    logger = logging.getLogger()
    logger.setLevel(level=logging.DEBUG)
    # formatter = logging.Formatter(fmt="%(asctime)s[%(levelname)s]<%(threadName)s>: %(message)s")

    streamHandlerBox = LoggerBox(master=fm, width=50, height=10, background="black", foreground="white")
    streamHandlerBox.pack(side="left")
    handler = logging.StreamHandler(streamHandlerBox)
    # handler.setFormatter(formatter)
    logger.addHandler(handler)

    yscrollbar = tkinter.Scrollbar(fm)
    yscrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
    # 滚动条与text联动
    yscrollbar.config(command=streamHandlerBox.yview)
    # text与滚动条联动
    streamHandlerBox.config(yscrollcommand=yscrollbar.set)

    for i in range(1000):
        logger.info(f"{i}")

root = tkinter.Tk()
add_log(master=root)
root.mainloop()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是实现该功能的示例代码: ```python import tkinter as tk from tkinter import ttk import pandas as pd class App(tk.Tk): def __init__(self): super().__init__() self.title("PA") self.geometry("800x600") # 创建菜单栏 menubar = tk.Menu(self) self.config(menu=menubar) # 创建“PA”菜单 pa_menu = tk.Menu(menubar, tearoff=0) menubar.add_cascade(label="PA", menu=pa_menu) # 添加“打开Excel”选项 pa_menu.add_command(label="打开Excel", command=self.open_excel) # 创建按键框架和日志框 self.button_frame = tk.Frame(self) self.button_frame.pack(side=tk.LEFT, fill=tk.Y) self.log_text = tk.Text(self, height=10) self.log_text.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True) # 初始化工作表名列表 self.sheet_names = [] def open_excel(self): # 弹出文件选择对话框,选择Excel文件 file_path = tk.filedialog.askopenfilename() # 加载Excel文件 try: excel_file = pd.ExcelFile(file_path) except Exception as e: self.log_text.insert(tk.END, "打开Excel文件失败:" + str(e) + "\n") return # 获取工作表名列表 self.sheet_names = excel_file.sheet_names # 绘制工作表名按键 for sheet_name in self.sheet_names: button = ttk.Button(self.button_frame, text=sheet_name, command=lambda name=sheet_name: self.load_data(name)) button.pack(side=tk.TOP, fill=tk.X) def load_data(self, sheet_name): # 读取指定工作表数据 try: data = pd.read_excel(file_path, sheet_name=sheet_name) except Exception as e: self.log_text.insert(tk.END, "读取工作表数据失败:" + str(e) + "\n") return # 清空日志框和按键框架 self.log_text.delete('1.0', tk.END) for widget in self.button_frame.winfo_children(): widget.destroy() # 绘制下拉框和滑动条 for i, row in data.iterrows(): label = ttk.Label(self.log_text, text=str(row)) label.pack(side=tk.TOP, fill=tk.X) combobox = ttk.Combobox(self.log_text, values=["选项1", "选项2", "选项3"]) combobox.pack(side=tk.TOP, fill=tk.X) scrollbar = tk.Scrollbar(self.log_text, orient=tk.HORIZONTAL) scrollbar.pack(side=tk.TOP, fill=tk.X) self.log_text.window_create(tk.END, window=label) self.log_text.window_create(tk.END, window=combobox) self.log_text.window_create(tk.END, window=scrollbar) self.log_text.insert(tk.END, "\n") if __name__ == "__main__": app = App() app.mainloop() ``` 在该示例代码,我们使用了 Tkinter 模块来创建 GUI 窗口和菜单栏,并使用 Pandas 模块来读取 Excel 文件数据。在菜单栏添加了“打开Excel”选项,单击该选项后会弹出文件选择对话框,用户可以选择要打开的 Excel 文件。在选择文件后,程序会读取 Excel 文件所有的工作表名,并将它们作为按键显示在窗口的左侧。当用户单击某个工作表名按键时,程序会读取相应工作表的所有行数据,并在日志生成带有下拉框和滑动条的每一行数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值