代码之家  ›  专栏  ›  技术社区  ›  Tony

tkinter box滚动配置

  •  0
  • Tony  · 技术社区  · 6 年前
    from tkinter import Tk, Label, Scrollbar,\
                         Frame, Canvas
    import pandas as pd
    
    def testTable(df):
    
        def onFrameConfigure(canvas):
            canvas.configure(scrollregion=canvas.bbox("all"))
    
        def mouse_wheel(event):
            global mouseCount
            if event.num == 5 or event.delta == -120:
                mouseCount -= 1
            if event.num == 4 or event.delta == 120:
                mouseCount += 1
            label['text'] = mouseCount
    
        mouseCount = 0    
        rows= df.shape[0]
        cols = df.shape[1]
    
        root = Tk()
        root.geometry("100x300")
    
        canvas = Canvas(root)
        frame = Frame(canvas)
        scrollbar = Scrollbar(root, orient="vertical", command=canvas.yview)
        canvas.configure(yscrollcommand=scrollbar.set)
    
        scrollbar.pack(side="right", fill="y")
        canvas.pack(side="left", fill="both", expand=True)
        canvas.create_window((rows,cols), window=frame, anchor="nw")
    
        frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))
        frame.bind("<MouseWheel>", mouse_wheel)
    
    
        for i in range(rows):       
            for j in range(cols):
                if i != 0:
                    Label(frame, text=df.loc[i,df.columns[j]], width=5, borderwidth="1", 
                     relief="solid").grid(row=i+1, column=j)
                else:
                     Label(frame, text=df.columns[j], width=5, borderwidth="1", 
                      relief="solid").grid(row=i, column=j)
        root.focus_force()
        root.mainloop()
    
    testTable(pd.DataFrame({'colA': range(20), 'colB': range(20)}))
    
    1. 有没有办法“冻结”表格的第一行,以便在向下滚动时列名不会消失?

    第二个问题是关于 this

    0 回复  |  直到 6 年前