猿问

PyGtk中excel文件路径的返回值

我无法将从函数返回的值存储到 .connect 按钮小部件中的变量中,以便在我的主程序中使用它。


我在 Python 3.4 中使用 PyGtk 3+ 我需要从这些程序返回值来加载其他值并执行计算。


   button = Gtk.Button("Brwose File")

   button.connect("clicked",self.test2)  

   def test2(self,widget,mylist1,clicked):

        dialog = Gtk.FileChooserDialog("Please choose a file", None,

                                   Gtk.FileChooserAction.OPEN,

                                   (Gtk.STOCK_CANCEL, 

                                    Gtk.ResponseType.CANCEL,

                                    Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) 

       response = dialog.run()

       if response == Gtk.ResponseType.OK:

           print("Open clicked")

           a = dialog.get_filename()  


       wb = xlrd.open_workbook(a)

       sheet = wb.sheet_by_index(0)

       ncols = sheet.ncols

       print(ncols)

       nrows = sheet.nrows

       print(nrows)

       clicked.append(1)

       print(clicked)

       mylist = []

       for i in range(sheet.nrows):

           data = sheet.row_values(i)

           mylist1.append(data)

       return (mylist1)


互换的青春
浏览 194回答 2
2回答

慕的地10843

由于事件循环的工作方式,这是不可能的。但是由于您正在使用一个类,您可以只使用一个实例变量。简化:class MyApp:    def __init__(self):        ...        self.my_var = None        button = Gtk.Button()        button.connect("clicked", self.on_button_clicked)    def on_button_clicked(self, widget):        ...        self.my_var = "something"那时self.my_var在课堂上的任何其他地方使用。

繁花如伊

这些是更好的解决方案。这是我更新的代码:def on_browse_clicked(self, widget):    """Creates dialogue box to choose file for loading data when browse button is clicked"""    dialog = Gtk.FileChooserDialog("Please choose a file", None,                                   Gtk.FileChooserAction.OPEN,                                   (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,                                    Gtk.STOCK_OPEN, Gtk.ResponseType.OK))    response = dialog.run()    if response == Gtk.ResponseType.OK:        print("Open clicked")        global file        file = dialog.get_filename()        dialog.destroy()        self.browse_entry.set_text(file)        wb = xlrd.open_workbook(file)        sheet = wb.sheet_by_index(0)        for i in range(1, sheet.nrows):            data = sheet.row_values(i)            print(data)            self.production_data_list_store.append(data)    else:        dialog.destroy()
随时随地看视频慕课网APP

相关分类

Python
我要回答