2017-02-16 5 views
0

Ich versuche derzeit, einen Freund mit der gleichen Aufgabe zu helfen, die ich zuvor getan habe, aber ich bin fest. wenn das Programm ausgeführt wird und ‚get Tickets‘ diese Fehlermeldung gedrückt wird angezeigt:Integer Argument erwartet Fehler tkinter Python 3.4

Während der oben genannten Ausnahmebehandlung erfolgte eine weitere Ausnahme:

Traceback (jüngste Aufforderung zuletzt): Datei „C: \ Python34 \ lib \ tkinter__init __. Py ", Zeile 1533, in Anruf zurückgeben self.func (* args) Datei" C: \ Benutzer \ harding \ Documents \ Oli \ Hausaufgaben \ Year10 \ Computing \ New folder \ carpark 3.4 (1) .py ", Zeile 21, in reg_output b.readlines (v.get()) TypeError: Integer Argument erwartet, bekam 'str'

Code:

from tkinter import * 
    import time 

    root = Tk() 
    root.title('Car Park') 

    v = StringVar() 

    car_in=Label(root, text= "Please enter your reg number") 
    car_in.grid(column=1, row=1) 

    reg_input=Entry(root, textvariable =v) 
    reg_input.grid(column=1, row=2) 

    def reg_input(): 
    with open ('tickets.txt', 'w') as b: 
     b.writelines(v.get()) 

    def reg_output(): 
    with open ('tickets.txt', 'r') as b: 
     b.readlines(v.get()) 

    reg_input_but=Button(root, text='Submit', command=reg_input) 
    reg_input_but.grid(column=1, row=4) 

    reg_output_b=Button(root, text='Get Ticket', command=reg_output) 
    reg_output_b.grid(column=1, row=5) 

Antwort

1

v eine StringVar daher v.get() gibt einen String. b.readlines (Zeilen) erfordern, dass Zeilen eine Ganzzahl sind, da Zeilen bestimmen, wie viele Zeilen gelesen werden sollen. Wenn Sie das Argument weglassen, wird es alle Zeilen lesen.

0

Betrachtet man den Fehler, erwartet die Funktion readlines ganzzahlige Argumente und v.get() gibt einen String zurück, der den Fehler verursacht. Sie können einfach b.readlines(v.get()) in Zeile 21 zu b.readlines() ändern, um den Fehler zu beheben.

Hier ist der bearbeitete Code.

from tkinter import * 
import time 

root = Tk() 
root.title('Car Park') 

v = StringVar() 

car_in=Label(root, text= "Please enter your reg number") 
car_in.grid(column=1, row=1) 

reg_input=Entry(root, textvariable =v) 
reg_input.grid(column=1, row=2) 

def reg_input(): 
    with open ('tickets.txt', 'w') as b: 
     b.writelines(v.get()) 

def reg_output(): 
    with open ('tickets.txt', 'r') as b: 
     b.readlines() 

reg_input_but=Button(root, text='Submit', command=reg_input) 
reg_input_but.grid(column=1, row=4) 

reg_output_b=Button(root, text='Get Ticket', command=reg_output) 
reg_output_b.grid(column=1, row=5) 
Verwandte Themen