【问题标题】:Pandastable Table not auto-scrolling down using down keyPandastable 表格不使用向下键自动向下滚动
【发布时间】:2018-02-02 16:04:58
【问题描述】:

我正在使用 pandastable 将数据从我的 CSV 显示到 Tkinter GUI 作为表结构。该表具有垂直和水平滚动条。滚动条使用鼠标可以正常工作。当我按下向下键时,焦点转到下一行。但是,滚动条不适用于向下键。这个功能是在 Pandastable 中没有实现还是我做错了什么?

例子:

from tkinter import *
from pandastable import Table, TableModel

class TestApp(Frame):
    def __init__(self, parent=None):
        self.parent = parent
        Frame.__init__(self)
        self.main = self.master
        self.main.geometry('600x400+200+100')
        self.main.title('Table app')
        f = Frame(self.main)
        f.pack(fill=BOTH,expand=1)
        df = TableModel.getSampleData()
        self.table = pt = Table(f, dataframe=df, showtoolbar=True, showstatusbar=True)
        pt.show()
        return

app = TestApp()
#launch the app
app.mainloop()

【问题讨论】:

  • 修复了缩进问题。
  • 你试过bind吗?

标签: python pandas tkinter


【解决方案1】:

作为一个想法

../dist-packages/pandastable/core.py

 def handle_arrow_keys(self, event):


            if event.keysym == 'Up':
                if self.currentrow == 0:
                    return
                else:
                    #self.yview('moveto', y)
                    #self.rowheader.yview('moveto', y)
                    event.widget.config(yscrollincrement = self.rowheight) 
                    self.rowheader.config(yscrollincrement = self.rowheight)                 
                    self.currentrow  = self.currentrow -1
                    event.widget.yview_scroll(-1, UNITS)
                    self.rowheader.yview_scroll(-1, UNITS)
                    self.redrawVisible()
            elif event.keysym == 'Down':
                if self.currentrow >= self.rows-1:
                    return
                else:
                    #self.yview('moveto', y)
                    #self.rowheader.yview('moveto', y)
                    event.widget.config(yscrollincrement = self.rowheight)
                    self.rowheader.config(yscrollincrement = self.rowheight)                                                  
                    self.currentrow  = self.currentrow +1
                    event.widget.yview_scroll(1, UNITS)
                    self.rowheader.yview_scroll(1, UNITS)
                    self.redrawVisible() 

只滚动一行:.config(yscrollincrement = self.rowheight)
来自

def mouse_wheel(self, event):

    event.widget.yview_scroll(-1, UNITS)
    self.rowheader.yview_scroll(-1, UNITS)
    self.redrawVisible()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2011-01-29
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多