我正在使用Python創建一個電子郵件客戶端,並且遇到了有關代碼格式的輕微問題。我使用的庫imaplib和Tkinter的(GUI)在定義它們之前調用Python變量
我有這樣的代碼片段,顯示在列表框中的電子郵件:所以現在我想確定我在這裏做lb_leftclick_handler
for i in range(latest_eid, latest_eid-15, -1):
i = str (i) #This block of code loads the 15 most recent emails
typ, data = mail.fetch(i, '(RFC822)')
for response_part in data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1].decode('UTF-8'))#Converts the content of the email data to string
eSubject = msg['subject']#Variable for the subject of each email
eFrom = msg['from']#Variable for the sender of each email
eFrom = eFrom.replace('<','')
eFrom = eFrom.replace('>','')#Deleting the < & > from the senders email
if len(eSubject) > 30:
eSubject = eSubject[0:28] + '...' #Load only the first 30 characters of the subject
lb = Listbox(rootA) #Listbox to show the emails in the gui
lb.pack()
lb.insert(END, 'From: (' + eFrom.split()[-1] + ') Subject:' + eSubject)
lb.configure(background='black', fg='white', height=2, width=85, font=('Arial', 10))
lb.bind('<Double-Button-1>', lb_leftclick_handler)
:
def lb_leftclick_handler(msg):
rootB = Tk()
rootB.title('Email')
rootB.configure(background='black')
bodyL = Label(rootB, text='(RFC822)')
bodyL.configure(background='black', fg='white')
基本上我的問題是,我想加載我在第一個代碼片段注入我的代碼的第二窗口創建窗口解析的電子郵件數據。由於Python是如何格式化的,def lb_leftclick_handler必須在被調用之前放置,但是,我不能將數據加載到窗口中,因爲它還不存在。有沒有解決方法?如果這個問題的措詞很糟糕,我很抱歉。
只需使用類。他們非常甜美,而且很有力量,在班上這些命令等等無關緊要。 –
如果你的代碼段出現在一個函數中,只要確保'lb_leftclick_handler'在該函數被調用*之前被定義。如果它不在函數中,那應該是。 – chepner