Попытка сохранить значения из шкалы tkInter - PullRequest
1 голос
/ 12 января 2020

Это мой первый пост, поэтому, пожалуйста, наберитесь терпения

У меня есть школьное задание на создание приложения для расходных материалов и я нарисовал бланк, почему мои значения шкалы tkinter не сохраняются в файл.

Информация о клиенте и код кнопки отправки работают должным образом (сохраняется в файл = info.txt). Закладка заказа не работает должным образом = не добавляет файл info.txt с указанными c количествами заказанные расходные материалы

Вот мой код

#def mainmenu():
from tkinter import *
from tkinter import ttk

import re
NON_ALPHA_RE = re.compile('[^A-Z0-9]+')
POSTCODE_RE = re.compile('^[A-Z]{1,2}[0-9]{1,2}[A-Z]? [0-9][A-Z]{2}$')

def normalise_postcode(eZIP_Postalcode):
    eZIP_Postalcode = NON_ALPHA_RE.sub('', eZIP_Postalcode.upper())
    eZIP_Postalcode = eZIP_Postalcode[:-3] + ' ' + eZIP_Postalcode[-3:]
    if POSTCODE_RE.match(eZIP_Postalcode):
        return eZIP_Postalcode
    return None


def submit() :
    invalidtext_1.set("")
    invalidtext_2.set("")
    invalidtext_3.set("")
    invalidtext_4.set("")
    invalidtext_5.set("")
    eName  =Name.get()
    eSurname =Surname.get()    
    ecountry =country.get()
    ecity =city.get()
    eAddressLine1 = AddressLine1.get()
    eAddressLine2 = AddressLine2.get()
    eState_Province_Region = State_Province_Region.get()
    eZIP_Postalcode = ZIP_Postalcode.get()
    valid = True

    if eName.isalpha() == False:
        invalidtext_1.set("Invalid forename. Please use letters only.")
        valid = False
    if eSurname.isalpha() == False:
        invalidtext_2.set("Invalid surname. Please use letters only.")
        valid = False
    if ecountry.isalpha() == False:
        invalidtext_3.set("Invalid country name. Please use letters only.")
        valid = False
    if ecity.isalpha() == False:
        invalidtext_4.set("Invalid city name. Please use letters only.")
        valid = False
    if eZIP_Postalcode != normalise_postcode(eZIP_Postalcode):
        invalidtext_5.set("Please enter a valid postcode.")
        valid = False
    if valid == False:

        return
    else:

        eName = eName.ljust(150)
        eSurname = eSurname.ljust(150)
        ecountry = ecountry.ljust(150)
        ecity = ecity.ljust(150)
        eAddressLine1 = eAddressLine1.ljust(150)
        eAddressLine2 = eAddressLine2.ljust(150)
        eState_Province_Region = eState_Province_Region.ljust(150)
        eZIP_Postalcode = eZIP_Postalcode.ljust(150)
        fileObject = open("Info.txt","a")

        fileObject.write(eName +"\n" + eSurname +"\n" + ecountry +"\n" + ecity +"\n" + eAddressLine1 +"\n" + eAddressLine2 +"\n" + eState_Province_Region +"\n" + eZIP_Postalcode +"\n")
        fileObject.close()

        return

def submitNumber():
    Paint=Paint.get()
    Paper=Paper.get()
    PaintBrush =PaintBrush.get()
    Easles=Easles.get()
    Pencils=Pencils.get()

    Paint = Paint.ljust(150)
    Paper = Paper.ljust(150)
    PaintBrush = PaintBrush.ljust(150)
    Easles = Easles.ljust(150)
    Pencils = Pencils.ljust(150)

    fileObject = open("Info.txt","a")
    fileObject.write(paint + paper + paintbrush + Easles + pencils +"\n")
    fileObject.close()


def mainWindow():
    global Name, invalidtext_1, frame1, invalidtext_2,Surname,city,country,invalidtext_3,invalidtext_4,AddressLine1,AddressLine2,State_Province_Region,ZIP_Postalcode,invalidtext_5
    window=Tk()


    window.title("Artist Products")
    window.configure(background = "#800000")
    window.resizable(width=True, height=True)
    # DON'T NEED window.geometry("500x300") #Width x Height

    tab_control = ttk.Notebook(window)
    tab1 = ttk.Frame(tab_control)

    #Tab 1 (as in the number 1!)

    tab_control.add(tab1, text='Customer details')
    Label (tab1, text="Name:" , bg="#800", fg="white", font="futuran 12").grid(row=1, column=0)
    Name=StringVar()
    eName=Entry(tab1, textvariable=Name)
    eName.grid(row=1, column=1)

    invalidtext_1=StringVar()
    invalid_1= Label(tab1, textvariable=invalidtext_1, font="Helvetica 12 ", fg="red")
    invalid_1.grid(row=1,column=2, sticky=W)

    Label (tab1, text="Surname:" , bg="#800", fg="white", font="futuran 12").grid(row=2, column=0)
    Surname=StringVar()
    eSurname=Entry(tab1, textvariable=Surname)
    eSurname.grid(row=2, column=1)

    invalidtext_2=StringVar()
    invalid_2= Label(tab1, textvariable=invalidtext_2, font="Helvetica 12 ", fg="red")
    invalid_2.grid(row=2,column=2, sticky=W)

    Label (tab1, text="Adress Line 1:" , bg="#800", fg="white", font="futuran 12").grid(row=3, column=0)
    AddressLine1=StringVar()
    eAddressLine1=Entry(tab1, textvariable=AddressLine1)
    eAddressLine1.grid(row=3, column=1)

    Label (tab1, text="Adress Line 2:" , bg="#800", fg="white", font="futuran 12").grid(row=4, column=0)
    AddressLine2=StringVar()
    eAddressLine2=Entry(tab1, textvariable=AddressLine2)
    eAddressLine2.grid(row=4, column=1)

    Label (tab1, text="State/province/region:" , bg="#800", fg="white", font="futuran 12").grid(row=5, column=0)
    State_Province_Region=StringVar()
    eState_Province_Region=Entry(tab1, textvariable=State_Province_Region)
    eState_Province_Region.grid(row=5, column=1)

    Label (tab1, text="ZIP/postal code:" , bg="#800", fg="white", font="futuran 12").grid(row=6, column=0)
    ZIP_Postalcode=StringVar()
    eZIP_Postalcode=Entry(tab1, textvariable=ZIP_Postalcode)
    eZIP_Postalcode.grid(row=6, column=1)

    invalidtext_5=StringVar()
    invalid_5= Label(tab1, textvariable=invalidtext_5, font="Helvetica 12 ", fg="red")
    invalid_5.grid(row=6,column=2, sticky=W)

    Label (tab1, text="Country name:" , bg="#800", fg="white", font="futuran 12").grid(row=7, column=0)
    country=StringVar()
    ecountry=Entry(tab1, textvariable=country)
    ecountry.grid(row=7, column=1)

    invalidtext_3=StringVar()
    invalid_3= Label(tab1, textvariable=invalidtext_3, font="Helvetica 12 ", fg="red")
    invalid_3.grid(row=7,column=2, sticky=W)

    Label (tab1, text="City:" , bg="#800", fg="white", font="futuran 12").grid(row=8, column=0)
    city=StringVar()
    ecity=Entry(tab1, textvariable=city)
    ecity.grid(row=8, column=1)

    invalidtext_4=StringVar()
    invalid_4= Label(tab1, textvariable=invalidtext_4, font="Helvetica 12 ", fg="red")
    invalid_4.grid(row=8,column=2, sticky=W)

####Tab 2
    tab2 = ttk.Frame(tab_control)
    tab_control.add(tab2, text='View All Products')

    Label (tab2, text='Paper(50 pages non lined):£3',bg="#800", fg="white", font="futuran 12").grid(row=1, column=0)
    Paper = Scale(tab2, from_=0, to=100, orient=HORIZONTAL)
    Paper.grid(row=1, column=1)

    Label (tab2, text='Paint (acrylic):£6' ,bg="#800", fg="white", font="futuran 12").grid(row=2, column=0)
    Paint = Scale(tab2, from_=0, to=100, orient=HORIZONTAL)
    Paint.grid(row=2, column=1)

    Label (tab2, text='Paint brush:£4' ,bg="#800", fg="white", font="futuran 12").grid(row=3, column=0)
    PaintBrush = Scale(tab2, from_=0, to=100, orient=HORIZONTAL)
    PaintBrush.grid(row=3, column=1)

    Label (tab2, text='Easels:£6' ,bg="#800", fg="white", font="futuran 12").grid(row=4, column=0)
    Easels = Scale(tab2, from_=0, to=100, orient=HORIZONTAL)
    Easels.grid(row=4, column=1)

    Label (tab2, text='Pencils:£4.50' ,bg="#800", fg="white", font="futuran 12").grid(row=5, column=0)
    Pencils = Scale(tab2, from_=0, to=100, orient=HORIZONTAL)
    Pencils.grid(row=5, column=1)

    #Tab 3
    tab3 = ttk.Frame(tab_control)
    tab_control.add(tab3, text='Invoices')
    tab_control.grid(row=1, column=1)

    #Tab 4
    tab4 = ttk.Frame(tab_control)
    tab_control.add(tab4, text='Basket')
    tab_control.grid(row=1, column=1)
    Label (tab4, text="Basket",bg="#800", fg="white", font="futuran 12").grid(row=1, column=0)

    #Tab 5
    tab5 = ttk.Frame(tab_control)
    tab_control.add(tab5, text='Orders')
    tab_control.grid(row=1, column=1)

    #buttons
    b6=Button(tab1, text="Close",command=quit, width=10)
    b6.grid(row=12, column=0)
    b6=Button(tab2, text="Close",command=quit, width=10)
    b6.grid(row=12, column=0)
    b6=Button(tab3, text="Close",command=quit, width=10)
    b6.grid(row=12, column=0)
    b6=Button(tab4, text="Close",command=quit, width=10)
    b6.grid(row=12, column=0)
    b6=Button(tab5, text="Close",command=quit, width=10)
    b6.grid(row=12, column=0)
    b18= Button(tab1, text=" Submit ",command=submit,width=10)
    b18.grid(row=12, column=1)
    b17= Button(tab2, text=" Submit ",command=submit,width=10)
    b17.grid(row=12, column=1)
    frame2 = Frame(window)
    frame2.grid()

    return window

    window = mainWindow()
    window.mainloop()

mainWindow()

Я также пытался получить кнопку отправки сведений о клиенте, чтобы сохранить ее в файл, а затем закрыть вкладку сведений о клиенте или, по крайней мере, переместить акцент на вкладке «Просмотр всех продуктов» (чтобы пользователь мог сосредоточиться на своем заказе).

Справка!

1 Ответ

0 голосов
/ 12 января 2020

Похоже, ваша проблема в одном из имен переменных. Вы ударяете масштабный объект результатом вызова get (), но затем пишете в то, что, как я предполагаю, было переменной, которую вы намеревались назначить. Эта переменная никогда не инициализируется и поэтому имеет значение None, поэтому в файл ничего не записывается. например,

Paint = Paint.get()
...
Paint = Paint.ljust(150)
...
fileObject.write(... + paint + ...)

должно быть

paint = Paint.get()
...
paint = Paint.ljust(150)
...
fileObject.write(... + paint)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...