首页 > 解决方案 > Python:如何从另一个类调用一个类

问题描述

我目前正在使用 Tkinter 开发一个 python GUI 项目。我有 2 个单独的类“经理”和“添加工作”。addWork 类应该返回选中的单选按钮和条目中的文本。如果我从主类而不是管理类调用该类,它工作得非常好。但是,如果我从管理器类调用它,它只返回文本而不是选择的单选按钮。我的代码有问题吗?请帮忙。

#!/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()

标签: pythonuser-interfacetkinter

解决方案


推荐阅读