使用Tkinter进行多个GUI

时间:2017-05-23 20:01:30

标签: python python-3.x user-interface tkinter

我正在使用Python 3.x,我正在尝试获取数据集记录并在额外的窗口中显示它们。我是一个血腥的初学者,目前我没有看到我的错误。我检查了多个线程,但没有得到解决方案。调试也没有帮助我。

这是我的方法:

import sqlite3
from tkinter import *

class Overview():
    def __init__(self,master):
        self.master = master
        self.master.geometry('170x110+100+200')
        self.master.title('Welcome!')
        self.button1 = Button(self.master, text="Show dataset", fg='green', command=self.gotoMenu).grid(
            row=1, column=1)

    def gotoMenu(self):
        # This is the Dataset GUI#
        root2 = Toplevel(self.master)
        myGUI = Menu(root2)

def main():
        root = Tk()
        overviewGUI = Overview(root)
        root.mainloop()

if __name__ == '__main__':
     main()


class Menu:
    def __init__(self,master):
        # This is the Dataset GUI#

        self.connection = sqlite3.connect('test.db')
        print("Opened database successfully")
        self.cur = self.connection.cursor()

        self.master = master
        self.master.title('Dataset')
        self.master.geometry("320x240")
        print("GUI created")
        self.dateLabel = Label(self.master, text="Date", width=10)
        self.dateLabel.grid(row=0, column=0)
        self.BMILabel = Label(self.master, text="Name", width=10)
        self.BMILabel.grid(row=0, column=1)
        self.stateLabel = Label(self.master, text="ID", width=10)
        self.stateLabel.grid(row=0, column=2)
        self.insertDS('random')
        self.showallrecords()

    def showallrecords(self):
        data = self.readfromdatabase()
        for index, dat in enumerate(data):
            Label(self.master, text=dat[2]).grid(row=index + 1, column=0)
            Label(self.master, text=dat[1]).grid(row=index + 1, column=1)
            Label(self.master, text=dat[0]).grid(row=index + 1, column=2)

    def readfromdatabase(self):
        self.cur.execute("SELECT * FROM LOGGING")
        return self.cur.fetchall()

    def createTable(self):
        try:
            self.connection.execute(
                "CREATE TABLE LOGGING(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT NOT NULL, TIMESTAMP DATE DEFAULT (datetime('now','localtime')));")
            print("Table created successfully")

        except:
            print("Table already exists")

    def insertDS(self, name):
        self.connection.execute("INSERT INTO LOGGING (NAME) \
            VALUES (?);", [name])
        self.connection.commit()
        print("Records created successfully")

我的应用程序应从“概述”GUI开始,单击按钮我想从“菜单”类中查看所有提取的数据集。

但是,点击按钮后,下一个窗口为空,标题为“欢迎”,应为“数据集”

更新

Example

我没有收到任何错误,但是我的获取结果不会显示在第二个窗口中,并且标题不是self.master.title('Dataset')在课程Menu中初始化的。

我觉得这只是创建一些空窗口,甚至没有查看我的Menu类?

解决方案

python className not defined NameError

以某种方式(无法解释原因)当我使用def移动'名称'块时(尽管缩进是正确的)它起作用了。

1 个答案:

答案 0 :(得分:0)

您已重载菜单,请使用其他名称更改您的班级名称。 并且不要使用import *