Python:如何从另一个类调用一个类

2024-06-02 06:09:55 发布

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

我目前正在使用Tkinter进行python GUI项目。我有两个独立的类“经理”和“addWork”。addWork类应该返回选中的radiobutton和条目中的文本。如果我从main而不是manager类调用该类,那么它工作得非常好。但是,如果我从manager类调用它,它只返回文本,而不是所选的radiobutton。我的代码有问题吗?请帮忙

#!/usr/bin/python3
from tkinter import *
#import json


class manager:
    def __init__(self):
        self.win = Tk()
        self.win.title("Work Manager")

        self.ui()
        self.activate()

    def ui(self):
        self.editBtn = Button(self.win, text="Edit", width=6)
        self.addBtn = Button(self.win, text="Add", command=self.launchAddTask)
        self.delBtn = Button(self.win, text="Del")

        self.impLbl = Label(self.win, text="Important")
        self.inProgressLbl = Label(self.win, text="|In Prgress")
        self.subLbl = Label(self.win, text="|Subject")

#       ============================================================================================
        
        self.editBtn.grid(row=0, column=0)
        self.addBtn.grid(row=0, column=8)
        self.delBtn.grid(row=0, column=9)

        self.impLbl.grid(row=1, column=0)
        self.inProgressLbl.grid(row=1, column=1)
        self.subLbl.grid(row=1, column=2, columnspan=2)

    def launchAddTask(self):
        addtask = addWork()

    def activate(self):
        self.win.mainloop()


class addWork:
    def __init__(self):
        self.add = Tk()
        self.add.title("Add Tasks")
        self.selectedSub = StringVar()
        self.selectedSub.set("Not set")

        self.subjects = ["Mathematics", "Physics", "Biology", "Chemistry", "Social Science", "Kannada", "English"]

        self.ui()
        self.activate()
 
    def ui(self):
        for (sub, i) in zip(self.subjects, range(7)):
            Radiobutton(self.add, text=sub, variable=self.selectedSub, value=sub, anchor=W, width=13).grid(row=i, column=0)
            print(sub)

        self.taskLbl = Label(self.add, text="Task:", anchor=W)
        self.task = Entry(self.add, width=20)
        self.task.bind('<Return>', self.submit)

#       ============================================================================================

        self.taskLbl.grid(row=7, column=0)
        self.task.grid(row=7, column=1, rowspan=2)

    def submit(self, event):
        subject = self.selectedSub.get()
        task = self.task.get()
        print(subject, ":", task)
        self.add.destroy()

    def activate(self):
        self.add.mainloop()



workManager = manager()