Выходные данные Нет, Нет, Нет Python с использованием sql lite - PullRequest
0 голосов
/ 30 марта 2020

Привет Всем, мне нужна помощь, почему мой результат вывода отсутствует в строке print ('bla bla'), поэтому из моего вывода есть None, None, None, которые фактически вставляют из npm, nama и jurusan, но вывод никто, может кто-нибудь помочь мне решить это спасибо

import sqlite3
import tkinter
from tkinter import *
from tkinter import ttk



def Daftar():
    window = Tk()
    window.title("Welcome to TutorialsPoint")
    window.geometry('400x400')
    window.configure(background = "grey");

    Lnpm = Label(window, text="Please Input Your npm: ").grid(row=0, column=0)
    Lnama = Label(window,text="Please Input Your nama: ").grid(row=1, column=0)
    Ljurusan = Label(window,text="Please Input Your jurusan: ").grid(row=2, column=0)

    npm = Entry(window).grid(row = 0,column = 1)
    nama = Entry(window).grid(row = 1,column = 1)
    jurusan = Entry(window).grid(row = 2,column = 1)
 def Clicked():

     print("First Name: %s\nLast Name: %s\nLast Name: %s" % (npm, nama, jurusan))

     connect = sqlite3.connect('Presensi.db')
     cur = connect.cursor()
     connect.execute("INSERT OR IGNORE INTO user(npm,nama,jurusan) values(?,?,?)", (str(npm),str(nama),str(jurusan)))
     connect.execute("INSERT OR IGNORE INTO presensi(nama) values(?)", (str(nama),))
     connect.commit()
     cur.close()

    btn = ttk.Button(window ,text="Register",command= Clicked()).grid(row=3,column=0)
    window.mainloop()

1 Ответ

0 голосов
/ 31 марта 2020

У вас есть две большие проблемы:

  • функция grid() объекта Entry возвращает None и вот что npm, nama и jurusan являются None. Вам нужно сохранить объект Entry, а не значение, возвращаемое из grid().
  • , который вы не вызываете get() для объектов Entry, чтобы получить их входные значения

Что вы можете сделать, это создать класс, в котором вы храните объекты Entry. Функция обратного вызова объекта Button может быть методом класса.

Я реорганизовал ваш код для этого:

from tkinter import Tk, Label, Button, Entry
import sqlite3

class Daftar:
    def __init__(self, master):
        self.window = master
        self.window.title("Welcome to TutorialsPoint")
        self.window.geometry('400x400')
        self.window.configure(background = "grey");

        self.Lnpm = Label(self.window, text="Please Input Your npm: ").grid(row=0, column=0)
        self.Lnama = Label(self.window,text="Please Input Your nama: ").grid(row=1, column=0)
        self.Ljurusan = Label(self.window,text="Please Input Your jurusan: ").grid(row=2, column=0)

        #Entry objects for later use
        self.npm = Entry(self.window)
        self.npm.grid(row = 0,column = 1)
        self.nama = Entry(self.window)
        self.nama.grid(row = 1,column = 1)
        self.jurusan = Entry(self.window)
        self.jurusan.grid(row = 2,column = 1)

        self.btn = Button(self.window ,text="Register",command = self.Clicked).grid(row=3,column=0)


    def Clicked(self):
        #Get the entry values
        npm = self.npm.get()
        nama = self.nama.get()
        jurusan = self.jurusan.get()
        print("First Name: %s\nLast Name: %s\nLast Name: %s" % (npm, nama, jurusan))

        connect = sqlite3.connect('Presensi.db')
        cur = connect.cursor()
        connect.execute("INSERT OR IGNORE INTO user(npm,nama,jurusan) values(?,?,?)", (npm,nama,jurusan))
        connect.execute("INSERT OR IGNORE INTO presensi(nama) values(?)", (nama,))
        connect.commit()
        cur.close()


root = Tk()
my_gui = Daftar(root)
root.mainloop()
window.mainloop()
...