2017-09-06 59 views
0

我正在構建一個UI,我可以讓用戶操作數據並選擇他們希望使用的參數。我無法將Pandas DataFrame顯示到我在Glade中製作的TreeView小部件中。Python:如何將Pandas DataFrame顯示爲在Glade中製作的Gtk TreeView Widget

下面是包含基於GTK的TreeView控件我格萊德XML文件:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Generated with glade 3.19.0 --> 
<interface> 
    <requires lib="gtk+" version="3.12"/> 
    <object class="GtkWindow" id="MainWindow"> 
    <property name="can_focus">False</property> 
    <child> 
     <object class="GtkTreeView" id="AllDataTreeView"> 
     <property name="visible">True</property> 
     <property name="can_focus">True</property> 
     <child internal-child="selection"> 
      <object class="GtkTreeSelection" id="treeview-selection1"/> 
     </child> 
     </object> 
    </child> 
    </object> 
</interface> 

這裏是我的Python腳本調用,並構建GTK的格萊德UI,與熊貓據幀我想顯示。

import pandas as pd 

import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 

#%% dataframe to be displayed: 
d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])} 
df = pd.DataFrame(d) 


#%% 

class Handler: 
#############################  
## INITIALIZATIONS/EXITS ## 
############################# 
    def __init__(self): #initializes the glade file used as well as any windows or text/image viewers# 
     self.gladefile = "ShowDataExample.glade" 
     self.builder = Gtk.Builder() 
     self.builder.add_from_file(self.gladefile) 
     self.builder.connect_signals(self) 
     self.window = self.builder.get_object("MainWindow") 
     # TreeView 
     self.AllDataTreeView = self.builder.get_object("AllDataTreeView") 
     # show glade setup 
     self.window.show() 

    def on_gtk_quit_activate(self, menuitem, data=None): #closes window when you click on quit from the file chooser# 
     print "quit from menu" 
     Gtk.main_quit() 

    def onDeleteWindow(self, *args): #closes window when you click on the x at the top of the window# 
     Gtk.main_quit(*args)  




if __name__ == "__main__": #Calls on the UI# 
    main = Handler() 
    Gtk.main() 

任何輸入,或鏈接到有用的例子將不勝感激!

回答

0

看看關於Gtk.TreeView在https://python-gtk-3-tutorial.readthedocs.io/en/latest/treeview.html

# create model like this 
store = Gtk.ListStore(str, str, str) 

# fill it with your data 
for row in df.itertuples(): 
    store.append([row[0], row[1], row[2]]) 

# set it as TreeView model 
self.AllDataTreeView.set_model(store) 

# Create and append columns 
for i, col in enumerate(df.columns, start=1): 
    renderer = Gtk.CellRendererText() 
    column = Gtk.TreeViewColumn(col, renderer, text=i) 
    self.AllDataTreeView.append_column(col) 

# in yours init function change from this 
self.window.show() 
# to this 
self.window.show_all() 

而且你應該罰款

+0

我做到了。我仍然有問題連接我的列表庫到我的Glade UI中的TreeView小部件。 – user2312900

相關問題