Python database with gui

Python database with gui

Using Python Tkinter GUI registration page may be created and record may be inserted in database making the database connection.

import tkinter
from tkinter import Entry
import mysql.connector
from tkinter import messagebox
global roll
global name
def ok():
try:
db = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="sharp_db")
mycursor = db.cursor()
sql = "insert into student(rollno,name) values (%s,%s)"
messagebox.showinfo("Status", "msg1")
roll="4095"
name="john"
messagebox.showinfo("Status", "msg2")
val=(roll,name)
mycursor.execute(sql, val)
db.commit()
print("inserted")
messagebox.showinfo("Status", "Student Registered")
except:
messagebox.showinfo("Error", "Exception occured")
window = tkinter.Tk()
window.title("Student Registration Page")
tkinter.Label(window, text = "Roll No : ",bg="red",fg="yellow").grid(row=0,column=0)
username=Entry(window).grid(row = 0, column = 4,padx=25)
tkinter.Label(window, text = "Name ",bg="green",fg ="yellow").grid(row=0,column=8,padx=10)
password=tkinter.Entry(window).grid(row=0,column=9,padx=25,pady=25)
button3=tkinter.Button(window, text = "Click",bg="red",fg="yellow",command=ok).grid(row=0,column=12)
window.mainloop()

when we run the above code output is:

Источник

Python database with gui

Что мы изучим

  1. Как создавать базы данных, выполнять CRUD операции и запросы на языке SQL.
  2. Как обрабатывать события в элементах Listbox.
  3. Как назначить действия основным кнопкам программы и кнопке закрытия окна.

Скрипт для создания словаря

Словарь представляет собой базу данных SQLite, которая поставляется с Python по умолчанию. Для создания новой базы не придется устанавливать никакие дополнительные модули. Однако при желании можно установить набор дополнительных инструментов для работы с SQLite и один из визуальных браузеров-редакторов:

Структура таблицы словаря dictionary задается в sql_create_dictionary_table скрипта create_new_db.py:

  • id – порядковый номер записи (целое число);
  • word – иностранное слово (текстовое поле);
  • meaning – значение слова на русском языке (текстовое поле).

При желании в этом описании можно задать поле для фонетической транскрипции. Для создания базы в определенной директории надо сначала убедиться, что необходимый путь к папке уже имеется на диске. Если нужную директорию не создать заранее, но указать путь к ней в коде, то выполнение скрипта завершится так:

Визуальный интерфейс для CRUD

SQL-запросы и команды

Первый запрос, который нам потребуется для извлечения из базы всех слов, выглядит так:

Сообщение об успешном добавлении нового слова

Для удаления слова необходимо выделить соответствующую строку. Слово извлекается из выделенной строки:

Читайте также:  Php soap https wsdl

Предварительное заполнение полей в окне редактирования

Это нужно для того, чтобы при сохранении записи не сохранилось пустое поле вместо предыдущего слова или значения, если одно из них не нужно было редактировать и пользователь не ввел слово (значение) вручную. А еще это упрощает исправление опечаток.

Фактическое обновление существующей записи производится командой со следующими параметрами:

Слова и значения выводятся в случайном порядке

Функция callback_left отслеживает клики по английским словам в левом элементе Listbox. Когда пользователь кликает по слову, функция посылает запрос в базу:

Редактировать словарь можно прямо из модуля запоминания слов

Действие для кнопки х, которая по умолчанию просто закрывает окно и останавливает программу, можно переопределить таким образом, чтобы выводилось окно подтверждения:

Подтверждение выхода

Для этого нужно задать новый протокол:

self.wind.protocol("WM_DELETE_WINDOW", self.on_exit) 
 def on_exit(self): if messagebox.askyesno("Выйти", "Закрыть программу?"): self.wind.destroy() 

Это полный код модуля word_match.py для запоминания и проверки значений слов:

from tkinter import ttk from tkinter import * import random, os import sqlite3 class Match: db_name = 'dictionary.db' def __init__(self, window): self.wind = window self.wind.title('Учим слова') self.eng, self.trans = str(), str() self.message = Label(text = '', fg = 'red') self.message.grid(row = 1, column = 0, columnspan = 2, sticky = W + E) # правая и левая колонки self.left = Listbox(height = 12, exportselection=False, activestyle='none') self.left.grid(row = 2, column = 0) self.right = Listbox(height = 12, activestyle='none') self.right.grid(row = 2, column = 1) self.right.bind(">", self.callback_right) self.left.bind(">", self.callback_left) # назначение команд кнопкам программы и х-кнопке окна ttk.Button(text="Начать сначала", command=self.restart_program).grid(row = 4, column = 1, sticky = W + E) ttk.Button(text="Редактировать", command=self.run_edit).grid(row = 4, column = 0, sticky = W + E) self.wind.protocol("WM_DELETE_WINDOW", self.on_exit) # заполняем колонки словами self.get_words() # закрытие программы по клику на кнопке х def on_exit(self): if messagebox.askyesno("Выйти", "Закрыть программу?"): self.wind.destroy() # подключение к базе и передача запроса def run_query(self, query, parameters = ()): with sqlite3.connect(self.db_name) as conn: cursor = conn.cursor() result = cursor.execute(query, parameters) conn.commit() return result # запрос на извлечение всех существующих записей из базы в алфавитном порядке def get_words(self): query = 'SELECT * FROM dictionary ORDER BY word DESC' db_rows = self.run_query(query) # формирование словаря из перемешанных в случайном порядке слов и их значений lst_left, lst_right = [], [] for row in db_rows: lst_left.append(row[1]) lst_right.append(row[2]) random.shuffle(lst_left) random.shuffle(lst_right) dic = dict(zip(lst_left, lst_right)) # заполнение правой и левой колонок for k, v in dic.items(): self.left.insert(END, k) self.right.insert(END, v) # обработка клика по словам в левой колонке def callback_left(self, event): self.message['text'] = '' if not event.widget.curselection(): return # извлечение из базы значения выделенного слова w = event.widget idx = int(w.curselection()[0]) self.eng = w.get(idx) with sqlite3.connect(self.db_name) as conn: cursor = conn.cursor() sqlite_select_query = 'SELECT * from dictionary WHERE word = ?' cursor.execute(sqlite_select_query, (self.eng,)) record = cursor.fetchone() self.trans = record[2] # обработка клика в правой колонке def callback_right(self, event1): self.message['text'] = '' if not event1.widget.curselection(): return w = event1.widget idx = int(w.curselection()[0]) click = w.get(idx) # если выбранное слово является правильным переводом, удаляем и оригинал, и значение if click == self.trans: self.right.delete(ANCHOR) self.left.delete(ANCHOR) # сообщаем о неверном значении else: self.message['text'] = 'Неправильно' self.right.selection_clear(0, END) # загружаем окно и скрипт редактирования словаря def run_edit(self): os.system('edit_dictionary.py') # перезапуск программы def restart_program(self): self.message['text'] = '' self.left.delete(0, END) self.right.delete(0, END) self.get_words() if __name__ == '__main__': window = Tk() window.geometry('250x245+350+200') application = Match(window) window.mainloop() 

Готовый проект доступен в репозитории .

Читайте также:  Eclipse настройка для php

Материалы по теме

Источник

MySQL CRUD Operations in Python Using GUI Tkinter

Are you a beginner and want to learn how to connect MySQL and perform CRUD operations in Python? Today we are going to learn MySQL CRUD Operations in Python using GUI Tkinter App. We’ll see how to connect with the MySQL database and perform insert, update, delete, and select operations using the python program with GUI Tkinter application.

MySQL Server Installation

So first, you need to download and install the MySQL server. If you don’t have it installed, you can watch this video on how to download the MySQL server for Ubuntu 20.04 LTS.

For Windows, you can check other videos on youtube or visit MySQL’s official website

Install Python MySQL Connector & Tkinter Packages

Before we begin, we’ll need to install two packages in python to implement in our program:

To establish a connection with the MySQL database, we’ll need to install the MySQL connector package for python.

Use the command “pip install mysql-connector-python” to install the MySQL connector package.

We will use Tkinter to create a GUI-based window application in python.

Use this command “sudo apt-get install python3-tk” or you can watch this complete video on how to install Tkinter.

Create Tkinter GUI Window

Once you complete the setup for the MySQL server and other packages installation, It’s time to import packages in our python program.

First, we’ll design our GUI application, you can follow below source code to use in your python script:

from tkinter import * import tkinter.messagebox as MessageBox import mysql.connector as mysql root = Tk() root.geometry("500x300") root.title("MySQL CRUD Operations") id = Label(root, text="Enter ID:", font=("verdana 15")) id.place(x=50, y=30) id_entry = Entry(root, font=("verdana 15")) id_entry.place(x=150, y=30) name = Label(root, text="Name:", font=("verdana 15")) name.place(x=50, y=80) name_entry = Entry(root, font=("verdana 15")) name_entry.place(x=150, y=80) phone = Label(root, text="Phone:", font=("verdana 15")) phone.place(x=50, y=130) phone_entry= Entry(root, font=("verdana 15")) phone_entry.place(x=150, y=130) btnInsert = Button(root, text="Insert", command=Insert, font=("verdana 15")).place(x=100, y=190) btnDelete = Button(root, text="Delete", command=Del, font=("verdana 15")).place(x=200, y=190) btnUpdate = Button(root, text="Update", command=Update, font=("verdana 15")).place(x=320, y=190) btnSelect= Button(root, text="Select", command=Select, font=("verdana 15")).place(x=200, y=240) root.mainloop()

MySQL CRUD Operations

Now that we have created our GUI App, we’ll write a code for MySQL connection and perform CRUD operations. I’ve provided the source code for Insert, Update, Delete, and Select functions.

def Insert(): name = name_entry.get() phone = phone_entry.get() if(id == "" or name == "" or phone == ""): MessageBox.showinfo("ALERT", "Please enter all fields") else: con = mysql.connect(host="localhost", user="Database Username", password="Your Database Password", database="Your Database Name") cursor = con.cursor() cursor.execute("insert into Person values('" + id +"', '"+ name +"', '" + phone +"')") cursor.execute("commit") MessageBox.showinfo("Status", "Successfully Inserted") con.close();
def Update(): name = name_entry.get() phone = phone_entry.get() if(name == "" or phone == ""): MessageBox.showinfo("ALERT", "Please enter fiels you want to update!") else: con = mysql.connect(host="localhost", user="Database Username", password="Your Database Password", database="Your Database Name") cursor = con.cursor() cursor.execute("update Person set name = '"+ name +"', phone='"+ phone +"' where ") cursor.execute("commit"); MessageBox.showinfo("Status", "Successfully Updated") con.close();
def Del(): if(id_entry.get() == ""): MessageBox.showinfo("ALERT", "Please enter ID to delete row") else: con = mysql.connect(host="localhost", user="Database Username", password="Your Database Password", database="Your Database Name") cursor = con.cursor() cursor.execute("delete from Person where ") cursor.execute("commit"); id_entry.delete(0, 'end') name_entry.delete(0, 'end') phone_entry.delete(0, 'end') MessageBox.showinfo("Status", "Successfully Deleted") con.close();
def Select(): if(id_entry.get() == ""): MessageBox.showinfo("ALERT","ID is required to select row!") else: con = mysql.connect(host="localhost", user="Database Username", password="Your Database Password", database="Your Database Name") cursor = con.cursor() cursor.execute("select * from Person where ") rows = cursor.fetchall() for row in rows: name_entry.insert(0, row[1]) phone_entry.insert(0, row[2]) con.close();

For step by step guide, follow the above video and try it in your system, and for full source code download here.

Читайте также:  Запуск python файла командная строка

Conclusion

So today we learn how to install and download MySQL server, MySQL connector, and Tkinter. After that, we learn how to establish a connection with the MySQL server using the python program. Finally, we perform MySQL CRUD operation with the help of good looking GUI Application.

This is just a simple example however, you can try more things with the MySQL server and I’ll come up with more examples like this, so stay tuned. For more python examples, check out our Python programming series or visit my 100 Python Exercises for Beginners.

Источник

Оцените статью