簡體   English   中英

使用類將 Tkinter 按鈕鏈接到 Sqlite3 數據庫

[英]Linked Tkinter button to Sqlite3 database using classes

我正在嘗試使用支持 sqlite3 數據庫的 Tkinter GUI。 我想用我的 Tkinter window 上的按鈕控制數據庫。我也在弄清楚如何在使用類時改進我的代碼。 但是,如果我按下“創建數據庫”按鈕,則不會將任何表插入到數據庫中。

按照我的代碼:

import sqlite3
import datetime

import os.path

import tkinter as tk
from tkinter import *
from tkinter import messagebox
from tkinter.ttk import Treeview, Separator


class MainApplication():
    def __init__(self, master):
        self.master = master
        self.frame = tk.Frame(self.master)
        self.master.title('Titanic DB')
        self.master.geometry('850x600')
        self.master.resizable(False, False)


        self.search_frame = tk.Frame(self.master).grid(row=0, column=0)
        self.label_search_heading = tk.Label(self.search_frame, text='DATABASE |', font=('bold', 14), pady=10).grid(row=0, column=0, sticky=W)

        self.button_create_database = tk.Button(self.search_frame, text='create database', command=self.ActionButtons, font=('bold', 14), pady=5, padx=50).grid(row=20, column=0, sticky=W)


    def ActionButtons(self):
        self.db = Database()
        self.createDB = self.db.CreateDatabase

class Database():

    DATABASE = "TitanicPassengers.db"

    def __init__(self):
        self.connection = sqlite3.connect(Database.DATABASE)
        self.cursor = self.connection.cursor()

    def CreateDatabase(self):
        self.connection = sqlite3.connect(Database.DATABASE)
        self.cursor = self.connection.cursor()
        self.execute("CREATE TABLE IF NOT EXISTS Passengers(Survived INTEGER, " \
                                                    "PClass INTEGER, " \
                                                    "Name TEXT, " \
                                                    "Sex TEXT, " \
                                                    "Age INTEGER, " \
                                                    "SiblingsSpousesAbord INTEGER, " \
                                                    "ParentsChildrenAbord INTEGER, "  \
                                                    "Fare REAL ) " 
                    )

        self.connection.commit()
        self.connection.close()

def main():

    root = tk.Tk()
    app = MainApplication(root)
    root.mainloop()


if __name__ == '__main__':
    main()

如果有人能給我提示,我會很高興,我做錯了什么。 非常感謝所有其他如何更好地組織我的代碼的技巧。 謝謝!

嗯,我自己想通了。

我變了

self.createDB = self.db.CreateDatabase

self.db.CreateDatabase()

沒關系,所有關於更好代碼結構的提示都是有幫助的。

謝謝!

我相信

self.execute("如果不存在則創建表...等等

應該

self.cursor.execute..

是不是?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM