-1

trying to have my GUI give an error message when one of the fields are not put in ? im struggling to see how to do have a message pop up when one of the fields are not put in but when they are all put in then it works.

from numbers import Number
import tkinter
from tkinter import ttk
from tkinter import messagebox

def enter_data():
    accepted = accept_var.get()

    if accepted=="Accepted":

        Cardnumber = Card_number_entry.get()
        Year = Year_entry.get()
        Name = Name_entry.get()
        Set = Set_entry.get()
        Cert = Cert_entry.get()
        Grade = Grade_entry.get()
        print("Card Number:", Cardnumber)
        print("Year:", Year)
        print("Name:", Name)
        print("Set:", Set)
        print("Cert:", Cert)
        print("Grade", Grade)
    else:
        tkinter.messagebox.showwarning(title= "Error", message="You have missed out infomation")

window = tkinter.Tk()
window.title("MGC POPULATION REPORT")

frame = tkinter.Frame(window)
frame.pack()

card_info_frame =tkinter.LabelFrame(frame, text="Card Infomation")
card_info_frame.grid(row= 0, column=0, padx=40, pady=20)

Card_number_label = tkinter.Label(card_info_frame, text="Card Number")
Card_number_label.grid(row=0, column=0, padx=10, pady=1)
Year_label = tkinter.Label(card_info_frame, text="Year")
Year_label.grid(row=2, column=0, padx=10, pady=1)
Name_label = tkinter.Label(card_info_frame, text="Name")
Name_label.grid(row=4, column=0, padx=10, pady=1)
Set_label = tkinter.Label(card_info_frame, text="Set")
Set_label.grid(row=6, column=0, padx=10, pady=1)
Cert_label = tkinter.Label(card_info_frame, text="Certification (#)")
Cert_label.grid(row=8, column=0, padx=10, pady=1)
Grade_label = tkinter.Label(card_info_frame, text="Grade")
Grade_label.grid(row=10, column=0, padx=10, pady=1)

Card_number_entry = tkinter.Entry(card_info_frame)
Year_entry = tkinter.Entry(card_info_frame)
Name_entry = tkinter.Entry(card_info_frame)
Set_entry = tkinter.Entry(card_info_frame)
Cert_entry = tkinter.Entry(card_info_frame)
Grade_entry = tkinter.Entry(card_info_frame)
Card_number_entry.grid(row=1, column=0)
Year_entry.grid(row=3, column=0)
Name_entry.grid(row=5, column=0)
Set_entry.grid(row=7, column=0)
Cert_entry.grid(row=9, column=0)
Grade_entry.grid(row=11, column=0)

button = tkinter.Button(frame, text="Enter Data", command= enter_data)
button.grid(row=13, column=0, sticky="news", padx=20, pady=10)


window.mainloop()

so if anyone can help me that would be helpful thank you

Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685
  • Could you provide a little more insight on the problem you are having? What error occurs on which line, and what are your inputs and expected outputs? – B Remmelzwaal Feb 18 '23 at 22:15
  • possibly helpful or related [Showing a MessageBox error whenever an entry box is empty](https://stackoverflow.com/q/59082823/1248974) – chickity china chinese chicken Feb 18 '23 at 22:15
  • thanks @BRemmelzwaal for the reply it is saying this : Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\mills\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__ return self.func(*args) File "C:\Users\mills\source\repos\MGC POP REPORT\MGC POP REPORT\MGC_POP_REPORT.py", line 7, in enter_data accepted = accept_var.get() NameError: name 'accept_var' is not defined – jordan mills Feb 18 '23 at 22:16
  • @chickitychinachinesechicken thank you but im not very good at coding lol so even tho the solution is probs there i cant tell where to put it lol – jordan mills Feb 18 '23 at 22:19
  • Where is `accept_var` defined? – B Remmelzwaal Feb 18 '23 at 22:30
  • @jordanmills, also try replacing your `else:` line with `if '' in [Cardnumber, Year, Name, Set, Cert, Grade]: messagebox.showwarning('Warning', 'You have missed out infomation')` – chickity china chinese chicken Feb 18 '23 at 22:34
  • @chickitychinachinesechicken thing is i dont know where to put any of this lol – jordan mills Feb 18 '23 at 22:59
  • @jordanmills with the code you posted, replace lines 23-24 with the two lines I posted in last comment – chickity china chinese chicken Feb 18 '23 at 23:02
  • @chickitychinachinesechicken nope still doesnt work – jordan mills Feb 19 '23 at 01:00

1 Answers1

0

You can check if the text boxes are empty.

For example:

if not Card_number_entry.get() or not Name_entry.get() or not Set_entry.get() or not Cert_entry.get() or not Grade_entry.get():
    accepted = "Error"
else:
    accepted = "Accepted"

If any of the textboxes have no content, the if statement will return true.

superTyDev
  • 26
  • 5