【问题标题】:Using tkinter library in Python在 Python 中使用 tkinter 库
【发布时间】:2016-03-24 17:29:09
【问题描述】:

我有两个 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

【问题讨论】:

  • 在 Python 中,不要像这样使用 getter 和 setter 函数。只需像在函数中一样直接访问属性即可。

标签: python tkinter display mygui


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 教授并不真正关心它的外观。我只是想学习如何使用添加功能,以便它可以保存用户输入的数据并显示它。它应该创建一个表格,其中每个新条目都列在窗口中。我遇到了麻烦,因为这本书没有清楚地解释使用按钮添加数据只是如何将按钮放在小部件中。
  • 最好的方法是模仿我给你看的那个例子。只需调用函数并提取变量即可。看看那个网站。
  • 它将'feet'变量定义为一个特殊的tkinter.StringVar(),允许你从任何地方提取它的值。在输入框中做同样的事情。如果您不将变量与框相关联,则它将不起作用。
  • 语法错误。 name = StringVar() sid = StringVar() email = StringVar() Address = StringVar() name = ttk.Entry (mainframe, width=7, textvariable=name name.grid(column=2, row=1, sticky=( W, E) ttk.Label(mainframe, textvariable=sid).grid(column=2, row = 2, sticky=(W, E))
  • 使用tkinter.StringVar() 或删除包含tkinter. 部分的需要并执行from tkinter import *
猜你喜欢
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多