Привет всем в StackOverflow!Python - программирование Tkinter. Изменение названия окна во время цикла события
Используется сайт много раз, первый раз, когда я задал вопрос, так что спасибо заранее. Для немного фона, я пишу приложение, похожее на Windows Notepad, который поддерживает шифрование. Идея заключается в том, что данные зашифровываются перед записью на диск, добавляя базовый уровень безопасности.
Такие программы, как интерпретатор IDLE, изменяют заголовок окна в течение цикла события. НАПРИМЕР. когда вы открываете новый файл, фрагмент окна изменяется на имя файла.
(собирался разместить фото из заголовка, но не хватает респ :()
Сначала это приводит меня к мысли, что я должен был бы создать новое окно каждый раз, когда я открываю файл, однако простаивает удается добавить Звездочка * в заголовке окна каждый раз, когда та новый файл открыт или создан/сохраненную
Мой класс Init:.
class pad():
def __init__(self,window):
window.title("Cyphertxt(Alpha) - An Encrypted Wordpad")
self.filepath = ""
from Resources.icon import ico
from os import remove
filename = ico()
window.wm_iconbitmap(filename)
remove(filename)
yscroll = Scrollbar(window)
yscroll.pack(side=RIGHT, fill=Y)
menubar = Menu(window)
window.config(menu=menubar)
filemenu = Menu(menubar)
menubar.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New File Ctrl+N", command=newf)
filemenu.add_command(label="Open Ctrl+O", command=openf)
filemenu.add_command(label="Decrypt Ctrl+R", command=self.decryptGUI)
filemenu.add_command(label="Save Ctrl+S", command=self.encryptGUI)
filemenu.add_command(label="Overwrite Ctrl+G", command=overwrite)
filemenu.add_command(label="Quit! Ctrl+Q", command=squit)
helpmenu = Menu(menubar)
menubar.add_cascade(label='Help', menu=helpmenu)
helpmenu.add_command(label="About ", command=about)
helpmenu.add_command(label="Help F1", command=docs)
frame = Frame(window).pack()
self.t1 = Text(window, yscrollcommand=yscroll.set)
yscroll.config(command=self.t1.yview)
self.t1.pack(fill=BOTH, expand=YES)
Здесь я попытался передать заголовок окна, его последний вещь должна быть c alled до конца функции открытого файла.
def openf(event=None):
pad.filepath = tkFileDialog.askopenfilename()
if pad.filepath == "":
pass
else:
pad.t1.delete(0.0, END)
pad.t1.insert(END, open(pad.filepath, "rb+").read())
**pad.window.config(title=" %s Cyphertxt - An Encrypted Wordpad" % (pad.filepath))**
AttributeError: pad instance has no attribute 'window'
Затем я попытался вызвать изменения внутри класса путем создания простого метода и вызова, что из функции openf:
def changetitle(self):
self.window.config(title="%s CypherTXT - An Encrypted Wordpad)
def openf(event=None):
pad.filepath = tkFileDialog.askopenfilename()
if pad.filepath == "":
pass
else:
pad.t1.delete(0.0, END)
pad.t1.insert(END, open(pad.filepath, "rb+").read())
**pad.changetitle()**
Возвращаемый:
NameError: global name 'window' is not defined
У меня есть попытался взглянуть на способ, которым IDLE удается это сделать, но я не смог его обработать. Эффект тоже хорош, но я не могу найти ответ.
Я надеюсь, что я объяснил моя проблема достаточно хорошо, пожалуйста, помогите :)
Я не могу поверить, что я пропустил это ... Большое спасибо :) – RandomHash
Кажется, что Tkinter не любит C, как форматирование строки% s возвращает ошибку, но я уверен, что смогу работать вокруг этого достаточно простого :) – RandomHash
@ 0x52-0x75-0x63-0x79: tkinter не имеет проблемы с форматированием в виде строки C. Если вы получаете сообщение об ошибке, вы, вероятно, делаете что-то неправильно. –