在类内外传递参数值

时间:2017-08-03 09:27:05

标签: python tkinter

我有2个班级:

  1. schedule_GUI负责创建和填充默认值(从csv文件中读取)。
  2. run_schedule负责根据时间表打开/关闭物理交换机。
  3. schedule_GUI期间,

    run_schedule__init__类的主人,可以共享csv文件数据(以及其他内容)。

    class run_schedule():
    
        def __init__(self,master):
            self.master = master
            self.sch_file = master.sch_file  #### sch.file is retrieved from master
            self.continue_task = master.continue_task
            self.tasks_total = master.tasks_total
            self.loop()
    

    如您所见,在下面的代码中,我可以在不同的标签中有多个日程表

    now-可以使用GUI更新计划并保存csv文件(schedule_GUI的一部分),但是当它发生时,它不会更新sch__file中的run_schedule

    问题:主人如何更新其孩子?

    init_parameters()
    
    ##Initialize GUI
    root = Tk()
    root.title("Advanced Schedualer")
    
    note = tkinter.ttk.Notebook(root)
    tab1 = tkinter.ttk.Frame(note)#,height=40)
    tab2 = tkinter.ttk.Frame(note)
    note.add(tab1, text = "Tab One", compound=TOP)
    note.add(tab2, text = "Tab Two")
    note.grid()
    
    #Create GUI in TAB@
    gui1 = schedule_GUI(tab1, num_switches)
    gui2 = schedule_GUI(tab2, num_switches)
    
    #Run Loop Shedules
    loop1 = run_schedule(gui1)
    loop2 = run_schedule(gui2)
    
    root.mainloop()
    

1 个答案:

答案 0 :(得分:0)

举一个例子,我编写了这段代码来演示不同类(内部和外部)之间的传递值:

class A:
  class C:
    def __init__(self, master, v, i):
        self.x = v + i
        print("C variable was created")
        print("in C Class, and my master is:", master.firstname)
        self.CB = B(master) # create B Class var and passing A Class as Master

    def print_c(self):
        print("running function print_c inside Class C", self.x)

def __init__(self, first, last, birthday, *args):
    print("A class variable was created")
    self.firstname = first
    self.lastname = last
    self.bday = birthday
    #self.email()
    self.c1 = self.C(self, *args) #Create C Class variable

def email(self):
    def doit(arg1):
        print("this is value inside", arg1)

    print(self.firstname + '.' + self.lastname + '@' + 'gmail.com')
    doit(self.bday)
    print("this is value outside", self.bday)

class B:
def __init__(self, master):
    print("B Class created, inheret A Class parameters via a C Class:", master.firstname, master.lastname)



#running script :

a1 = A("Jhon", 'Doe', '13/12/1985', 11, 12) # create a1- an A Class variable with parameters
print("My email value from A Class:", a1.email()) # calling methon "email" belongs to a1
a1.c1.print_c() # calling c1 variable, part of a1 variable declared earlier