为了账号安全,请及时绑定邮箱和手机立即绑定

PyGtk中excel文件路径的返回值

PyGtk中excel文件路径的返回值

互换的青春 2022-01-11 19:37:44
我无法将从函数返回的值存储到 .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)
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

由于事件循环的工作方式,这是不可能的。但是由于您正在使用一个类,您可以只使用一个实例变量。简化:


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在课堂上的任何其他地方使用。


查看完整回答
反对 回复 2022-01-11
?
繁花如伊

TA贡献2012条经验 获得超12个赞

这些是更好的解决方案。这是我更新的代码:


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()


查看完整回答
反对 回复 2022-01-11
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信