-2

我有两个 python 文件gui.pystudent.py. 我已经导入tkinter,我会要求用户输入他们的姓名、ID、电子邮件和地址,使用 tkinter 小部件我将在列表中显示所有内容。如何使用类来做到这一点?

这是gui.py

    import tkinter
    import student

    class MyGUI:
        def __init__(self):
            self.__students = []

        # Create the main window widget
        self.main_window = tkinter.Tk()

        self.name_f = tkinter.Frame(self.main_window)
        self.id_f = tkinter.Frame(self.main_window)
        self.email_f = tkinter.Frame(self.main_window)
        self.addy_f = tkinter.Frame(self.main_window)
        self.buttons_f = tkinter.Frame(self.main_window)

        # Create a Label and Entry widget for each item in
        # the Student class
        self.name_l = tkinter.Label(self.name_f, text='Name: ')
        self.name_e = tkinter.Entry(self.name_f, width=10)
        self.id_l = tkinter.Label(self.id_f, text='ID: ')
        self.id_e = tkinter.Entry(self.id_f, width=10)
        self.email_l = tkinter.Label(self.email_f, text='Email: ')
        self.email_e = tkinter.Entry(self.email_f, width=10)
        self.addy_l = tkinter.Label(self.addy_f, text='Address: ')
        self.addy_e = tkinter.Entry(self.addy_f, width=10)

        self.add_b = tkinter.Button(self.buttons_f, text='Add Current    Data', command=self.add)
        self.display_b = tkinter.Button(self.buttons_f, text='List All', command=self.display)
        self.quit_b = tkinter.Button(self.buttons_f, text='Quit', command=self.main_window.destroy)

        self.name_l.pack(side='left')
        self.name_e.pack(side='left')
        self.id_l.pack(side='left')
        self.id_e.pack(side='left')
        self.email_l.pack(side='left')
        self.email_e.pack(side='left')
        self.addy_l.pack(side='left')
        self.addy_e.pack(side='left')

        self.add_b.pack(side='left')
        self.display_b.pack(side='left')
        self.quit_b.pack(side='left')

        self.name_f.pack()
        self.id_f.pack()
        self.email_f.pack()
        self.addy_f.pack()
        self.buttons_f.pack()

        #Enter the tkinter main loop
        tkinter.mainloop()

    def add(self):
        # we will do this in class
        pass

    def display(self):
        # we will do this in class
        pass


# Create an instance of the MyGUI class
my_gui = MyGUI()

这是student.py

class Student:
# this a comment
# most languages define attributes sep
# Declare String name
def setName(self, n):
    self.name = n

def setId(self, i):
    self.sid = i

def setEmail(self, e):
    # check to see if e has an @ sign
    self.email = e

def setAddy(self, a):
    self.addy = a

def getName(self):
    return self.name

def getId(self):
    return self.sid

def getEmail(self):
    return self.email

def getAddy(self):
    return self.addy

def printInfo(self):
    info = "Name: "
    info += self.name
    info += '\nID: '
    info += self.sid
    info += '\nEmail: '
    info += self.email
    info += '\nAddress: '
    info += self.addy
    info += '\n'
    return info
4

1 回答 1

0

为你应该自己学习的东西寻求代码解决方案可能不是一个好主意。

只需在此处查找 TKinter 的文档:https ://docs.python.org/3/library/tkinter.html

请注意,您可能需要考虑在显示信息时打开单独的窗口。当我第一次学习 TKinter 时,我首先通过使用print命令将所有数据打印到控制台来练习,然后再尝试将它们强制转换为表格。

此外,考虑充实 GUI 并使其看起来像一个表格。给每个标签一个固定的长度,给每个盒子一个固定的长度,这样会更好看。一个很好的例子就是在这个学习 TKinter 的神奇网站上:http ://www.tkdocs.com/tutorial/firstexample.html

只需向下滚动,直到找到代码的 Python 实现 :)

于 2015-12-18T04:04:56.480 回答