Python: Как сделать переменную смесью другой переменной и строки? - PullRequest
1 голос
/ 05 апреля 2019

Я делаю язык кодирования на python и хочу, чтобы люди могли сохранять свой код в файле с собственным именем.

Я пытался кодировать его, но он продолжает выдавать ошибку:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
Вот мой текущий код:

import os

root = Tk()

def save_name():
    global file_title
    save_namewindow = Toplevel(root)
    save_namewindow.title("Save")
    Label(save_namewindow, text="Name the File").pack()
    file_title = Entry(save_namewindow).pack()
    Button(save_namewindow, text="Save", command=save).pack()

def save():
   file_name = (file_title + ".txt")
   if os.path.isfile(file_name):
       if messagebox.askyesno("File Exists", "Would you like to overwrite the existing file '" + file_name + "'?"):
         os.remove(file_name)
         file = open(file_name, "x")
         file.write(shell.get("1.0", END))
         file.close()
   else:
     file = open(file_name, "x")
     file.write(shell.get("1.0", END))
     file.close()

Я хочу, чтобы ответ был: file_name = file_title + '.txt' правильным образом. Заранее спасибо.

1 Ответ

0 голосов
/ 05 апреля 2019

Я вижу две ошибки в коде

Первый:

file_title = Entry(save_namewindow).pack()

Он присваивает None file_title, потому что pack() возвращает None.
То есть у вас нет доступа к Entry.
Вы должны сделать это в два этапа

file_title = Entry(save_namewindow)
file_title.pack()

И теперь у вас есть доступ к Entry.

Секунда:

Чтобы получить текст из Entry, вы должны использовать .get().Это означает file_title.get().

Так что вам нужно

file_name = file_title.get() + ".txt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...