В настоящее время я создаю базу данных, используя MySql на Python для сбора информации о больницах.Я создал разные программы (например, одну для формы регистрации, одну для базы данных и т. Д.) И импортировал их (для их выполнения) в различные части других моих программ.Однако один из них не выполняет свою функцию и выдает ошибку.
Вот общая процедура:
.Сделайте программу для создания базы данных, используя MySql.Сделайте программу для создания 2 кнопок с помощью Pygame (Зарегистрироваться и войти).Сделайте программу для создания регистрационной формы при нажатии Регистрация.,Отправить подробности об этом в базу данных
В целом, программа работает, если программа кнопок Pygame не включена.Программа базы данных выполняет программу формы регистрации, которая получает введенные данные и отправляется программой базы данных в созданную базу данных.Однако при выполнении формы регистрации, когда я нажимаю кнопку «Регистрация» (в программе «Кнопки»), возникает ошибка.Я попробовал много способов сделать то же самое, даже скопировать код в саму программу, но оба они дают один и тот же результат.
Вот код, который я использовал для Button:
import pygame
pygame.init()
class button():
def __init__(self, colour, x, y, width, height, text=''):
self.colour = colour
self.x = x
self.y = y
self.width = width
self.height = height
self.text = text
def draw(self, win, outline=None):
if outline:
pygame.draw.rect(win, outline, (self.x - 2, self.y - 2, self.width + 4, self.height + 4), 0)
pygame.draw.rect(win, self.colour, (self.x, self.y, self.width, self.height), 0)
if self.text != '':
font = pygame.font.SysFont('comicsans', 35)
text = font.render(self.text, 1, (0, 0, 0))
win.blit(text, (
self.x + (self.width / 2 - text.get_width() / 2), self.y + (self.height / 2 - text.get_height() / 2)))
def isOver(self, pos):
if pos[0] > self.x and pos[0] < self.x + self.width:
if pos[1] > self.y and pos[1] < self.y + self.height:
return True
return False
def redrawGameWindow():
win.fill((255, 255, 255))
loginButton.draw(win)
registerButton.draw(win)
def register():
import Databases
run = True
loginButton = button((0, 255, 0), 175, 150, 150, 60, 'Login')
registerButton = button((255, 0, 0), 175, 300, 150, 60, 'Register')
while run:
redrawGameWindow()
pygame.display.update()
for event in pygame.event.get():
pos = pygame.mouse.get_pos()
if event.type == pygame.QUIT:
run = False
pygame.quit()
quit()
if event.type == pygame.MOUSEBUTTONDOWN:
if loginButton.isOver(pos):
print("Login")
if registerButton.isOver(pos):
register()
if event.type == pygame.MOUSEMOTION:
if loginButton.isOver(pos):
loginButton.colour = (0, 175, 0)
else:
loginButton.colour = (0, 255, 0)
if registerButton.isOver(pos):
registerButton.colour = (255, 0, 0)
else:
registerButton.colour = (175, 0, 0)
Вот код, который я использовал для регистрационной формы:
from tkinter import *
tk = Tk()
tk.geometry('500x500')
tk.title("Registration Form")
Heading = Label(tk, text = "Registration Form", width = 20, font = ('bold', 20))
Heading.place(x = 120, y = 53)
hospitalName = Label(tk, text = "Hospital Name", width = 20, font = ('comicsans', 15))
hospitalName.place(x = 80, y = 130 )
entryBox_hosp = Entry(tk)
entryBox_hosp.place(x = 229, y = 130)
password = Label(tk, text = "Password", width = 20, font = ('comicsans', 15))
password.place(x = 75, y = 180)
entryBox_pass = Entry(tk)
entryBox_pass.place(x = 229, y = 180)
coordinates = Label(tk, text = "Coordinates", width = 20, font = ('comicsans', 15))
coordinates.place(x = 80, y = 230)
entryBox_crds = Entry(tk)
entryBox_crds.place(x = 229, y = 230)
def transfer():
global hosp_name
global password
global coordinates
hosp_name = entryBox_hosp.get()
password = entryBox_pass.get()
coordinates = entryBox_crds.get()
submit = Button(tk, text = "Submit", fg = 'red', width = 20, command = transfer)
submit.place(x = 150, y = 350)
mainloop()
Для базы данных:
import mysql.connector
import Registration_Form
mydb = mysql.connector.connect(
host = #,
user = #,
passwd = #,
database = #
)
myCursor = mydb.cursor()
sqlFormula = "INSERT INTO UserInfo (hosp_name, password, coordinates) VALUES (%s, %s, %s)"
hospital = [Registration_Form.hosp_name, Registration_Form.password, Registration_Form.coordinates]
myCursor.execute(sqlFormula, hospital)
mydb.commit()
ПРИМЕЧАНИЕ. База данных уже быласоздано.Это всего лишь шаги по заполнению моей базы данных (той, которая выполняется)
Может кто-нибудь предложить способ устранения этой проблемы или написать альтернативный код.
ИСПОЛЬЗОВАННАЯ ВЕРСИЯ ПИТОНА: 3.70,2