2

私は tkintertable を使用しており、どの行が選択されているかを確認したいと考えています。これは可能ですか?また、列を並べ替えて、好きなように列に名前を付けたい...

これどうやってするの?

4

1 に答える 1

1

少し遅れましたが、他の誰かが私のようにGoogle検索でこれを見つけた場合に備えて、これに答えると思いました:P

マウスのクリックに基づいてデータを選択するには、いくつかの方法があります。

まず、マウス クリックをコールバック関数にバインドする必要があります。このコールバック関数では、データを取得する必要があります。マウス ボタンを離したときにデータを取得できるように、リリース時にマウス クリックをバインドする必要がある場合があります。

table.get_row_clicked()/table.get_col_clicked() 関数を model.getValueAt() と共に使用して、個々のセルを取得できます。

column_name = key & 選択した行の内容 column = value であるディクショナリ内の行全体の内容を取得するには、model.getRecordAtRow(row_index) を使用する必要があります。

例:

from Tkinter import *
from ttk import *
from tkintertable.Tables import TableCanvas
from tkintertable.TableModels import TableModel

class Application(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.model = TableModel()
        self.table = TableCanvas(self, model=self.model)
        self.table.createTableFrame()
        root.bind('<ButtonRelease-1>', self.clicked)   #Bind the click release event

        self.create_widgets()

    def create_widgets(self):
        self.table.model.load('save.table')  #You don't have to load a model, but I usually
        self.table.redrawTable()             #Create a base model for my tables.

        d = dir(self.table)  #Will show you what you can do with tables.  add .model
                             #to the end to see what you can do with the models.
        for i in d:
            print i

    def clicked(self, event):  #Click event callback function.
        #Probably needs better exception handling, but w/e.
        try:
            rclicked = self.table.get_row_clicked(event)
            cclicked = self.table.get_col_clicked(event)
            clicks = (rclicked, cclicked)
            print 'clicks:', clicks
        except: 
            print 'Error'
        if clicks:
            #Now we try to get the value of the row+col that was clicked.
            try: print 'single cell:', self.table.model.getValueAt(clicks[0], clicks[1])
            except: print 'No record at:', clicks

            #This is how you can get the entire contents of a row.
            try: print 'entire record:', self.table.model.getRecordAtRow(clicks[0])
            except: print 'No record at:', clicks

root = Tk()
root.title('Table Test')
app = Application(master=root)
print 'Starting mainloop()'
app.mainloop()

他のことに関しては、ウィキから情報を取得できるはずです。

http://code.google.com/p/tkintertable/wiki/Usage

理解するのが面倒なことがいくつかありますが、それは価値があります。セルの内容をプログラムで変更する方法はまだわかりません。それは wiki ページにあります (笑)。

于 2014-04-16T23:25:36.300 に答える