在python类之外的其他脚本中保存一个大函数

2024-07-04 16:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个类中有一个非常大的函数(包含很多elif)。 代码如下:

from tkinter import *

class Gui(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)  
        self.parent = parent
        self.initUI()
def testsubmit(self):
    orientation = self.panelorientation.get()
    numberofcols = float(self.columns.get())
    numberofrows = float(self.rows.get())
    if orientation == "Portrait":
        if numberofrows == 1 and numberofcols ==1:
            self.entries['Number of Helio Std. Rail (L=84)'].delete(0,END)
            self.entries['Number of Helio Std. Rail (L=84)'].insert(0, 1 )
        elif numberofrows == 1 and numberofcols ==2:
            self.entries['Number of Helio Std. Rail (L=84)'].delete(0,END)
            self.entries['Number of Helio Std. Rail (L=84)'].insert(0, 2 )
            self.entries['Helio Std. Splice Kit'].delete(0,END)
            self.entries['Helio Std. Splice Kit'].insert(0, 0)                
        elif numberofrows == 1 and numberofcols ==3:
            self.entries['Number of Helio Std. Rail (L=124)'].delete(0,END)
            self.entries['Number of Helio Std. Rail (L=124)'].insert(0, 2)
            self.entries['Helio Std. Splice Kit'].delete(0,END)
            self.entries['Helio Std. Splice Kit'].insert(0, 0)  
            ...
            ...

 def main():
    root = Tk()
    app = Gui(root)
    app.testsubmit()
    root.mainloop()

    if __name__ == '__main__':
        main()

我知道这不是在一个脚本中编写一堆ifelif的有效方法。我可以在另一个脚本中编写这个函数并在类中使用吗


Tags: ofselfnumberifdeleteparentendentries
2条回答

您可以在extra\u gui.py:

def testsubmit(self):
    ...

然后将其定义为Gui类的方法,如下所示:

from tkinter import *
import extra_gui as EG

class Gui(Frame):
    testsubmit = EG.testsubmit

试试这个例子

在gui.py中

class Gui:
    foo = 'foos'
    bar = 'bars'

    def __init__(self, f):
        self.foo = f


def fcn(s, b):
    s.bar = b

# associate fcn with Gui
Gui.fcn = fcn

然后,在壳里

>>> import gui
>>> bb = b.Gui('aaa')
>>>
>>> bb.foo
'aaa'
>>> bb.bar
'bars'
>>>
>>>
>>> bb.fcn('bbbbbb')
>>> bb.foo
'aaa'
>>> bb.bar
'bbbbbb'

相关问题 更多 >

    热门问题