Hello StackOverflow!Python - Tkinter編程。在事件循環中更改窗口標題
多次使用該網站,第一次我不得不問一個問題,所以提前致謝。對於一些背景,我正在編寫一個類似於Windows記事本的應用程序,它支持加密。這個想法是數據在寫入磁盤之前被加密,並增加了一個基本的安全層。
程序(如IDLE解釋程序)會在整個事件循環過程中更改窗口標題。例如。當您打開一個新文件時,窗口的圖塊將變爲文件的名稱。
(當時標題欄會後圖片,但沒有足夠的代表:()
起初,這使我相信,我將不得不每次打開文件時創建一個新的窗口,但是空閒設法星號*每TA打開新文件或創建/保存時間追加到窗口標題
我班初始化:
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在打開的文件功能結束之前調整。
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做到這一點的方式,但我一直無法解決。 Effbot往往也很好,但我無法在那裏找到答案。
我希望我已經解釋了我的問題不夠好,請幫助:)
我不敢相信我錯過了...非常感謝:) – RandomHash
似乎Tkinter不喜歡C像字符串格式化%s返回一個錯誤,但我敢肯定,我可以工作,就足夠簡單:) – RandomHash
@ 0x52-0x75-0x63-0x79:tkinter對C類字符串格式沒有問題。如果你遇到錯誤,你可能會做錯事。 –