2017-02-16 5 views
0

В настоящее время я пытаюсь помочь другу с той же задачей, что и раньше, но я застрял. когда программа запускается и «билеты» нажимается это сообщение об ошибке отображается:целочисленный аргумент ожидаемая ошибка tkinter python 3.4

Во время обработки вышеуказанного исключения, другое исключение произошло:

Traceback (самый последний вызов последнего): файл «C: \ Python34 \ lib \ tkinter__init __. Py ", строка 1533, в вызов return self.func (* args) Файл« C: \ Users \ harding \ Documents \ Oli \ Homework \ Year10 \ Computing \ Новая папка \ carpark 3.4 (1) .py ", строка 21, в reg_output b.readlines (v.get()) ТипError: ожидаемый целочисленный аргумент, полученный 'str'

код:

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) 

ответ

1

v является STRINGVAR, поэтому v.get() возвращает строку. b.readlines (lines) требует, чтобы строки были целыми, потому что строки определяют, сколько строк должно быть прочитано. Если вы опустите аргумент, он будет читать все строки.

0

Глядя на ошибку, функция readlines ожидает целых аргументов и v.get() возвращает строку, вызывающую ошибку. Вы можете просто изменить b.readlines(v.get()) в строке 21 на b.readlines(), чтобы исправить ошибку.

Вот отредактированный код.

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) 
Смежные вопросы