使用 win32com + tkinter 的简单电子邮件生成器
Simple email generator with win32com + tkinter
我正在尝试制作一个程序来使用 tkinter 和 win32com
我想要的:
- 当我 select: SAD + 单击 generate= 显示 outlook 消息 'pfff我很难过'
- 当我 select: HAPPY + 点击 generate= 显示 outlook 消息 *'Thanks I'm happy !'
问题:
- 当你 运行 程序和你 select SAD 或 HAPPY + Generate 它工作正常但是当你再次尝试同样的事情时它会给出一个 error: Tkinter 回调异常
回溯(最近调用最后): 见下图
import tkinter as tk
import win32com.client as client
root = tk.Tk()
outlook = client.Dispatch('Outlook.Application')
message = outlook.CreateItem(0)
message.Subject= "My status"
message.To = "test@tst.com"
#When button is clicked
def Click ():
if(var.get()==1):
message.Body="Thanks im HAPPY !!"
message.Display()
if(var.get()==2):
message.Body="Pfff im sad:(("
message.Display()
#RadioButtons
var = tk.IntVar()
rdb1 = tk.Radiobutton(root, text="HAPPY", variable=var, value=1)
rdb1.pack()
rdb2 = tk.Radiobutton(root, text="SAD", variable=var, value=2)
rdb2.pack()
#Button
BTN=tk.Button(root, text="Generate",command=Click)
BTN.pack()
root.mainloop()
如果可能的话,我更喜欢对我的代码进行编辑,而不是执行相同操作的不同代码。
第一次点击生成时
当我关闭 Outlook 页面并点击生成新消息时
我认为您需要将消息的创建移动到点击功能中。这样你就不会继续与同一个 message
交互,这似乎是你的问题。
outlook = client.Dispatch('Outlook.Application')
#When button is clicked
def Click ():
message = outlook.CreateItem(0)
message.Subject= "My status"
message.To = "test@tst.com"
if(var.get()==1):
message.Body="Thanks im HAPPY !!"
message.Display()
if(var.get()==2):
message.Body="Pfff im sad:(("
message.Display()
试试这个:
def Click ():
outlook = client.Dispatch('Outlook.Application')
message = outlook.CreateItem(0)
message.Subject= "My status"
message.To = "test@tst.com"
if(var.get()==1):
message.Body="Thanks im HAPPY !!"
message.Display()
if(var.get()==2):
message.Body="Pfff im sad:(("
message.Display()
我正在尝试制作一个程序来使用 tkinter 和 win32com
我想要的:
- 当我 select: SAD + 单击 generate= 显示 outlook 消息 'pfff我很难过'
- 当我 select: HAPPY + 点击 generate= 显示 outlook 消息 *'Thanks I'm happy !'
问题:
- 当你 运行 程序和你 select SAD 或 HAPPY + Generate 它工作正常但是当你再次尝试同样的事情时它会给出一个 error: Tkinter 回调异常 回溯(最近调用最后): 见下图
import tkinter as tk
import win32com.client as client
root = tk.Tk()
outlook = client.Dispatch('Outlook.Application')
message = outlook.CreateItem(0)
message.Subject= "My status"
message.To = "test@tst.com"
#When button is clicked
def Click ():
if(var.get()==1):
message.Body="Thanks im HAPPY !!"
message.Display()
if(var.get()==2):
message.Body="Pfff im sad:(("
message.Display()
#RadioButtons
var = tk.IntVar()
rdb1 = tk.Radiobutton(root, text="HAPPY", variable=var, value=1)
rdb1.pack()
rdb2 = tk.Radiobutton(root, text="SAD", variable=var, value=2)
rdb2.pack()
#Button
BTN=tk.Button(root, text="Generate",command=Click)
BTN.pack()
root.mainloop()
如果可能的话,我更喜欢对我的代码进行编辑,而不是执行相同操作的不同代码。
第一次点击生成时
当我关闭 Outlook 页面并点击生成新消息时
我认为您需要将消息的创建移动到点击功能中。这样你就不会继续与同一个 message
交互,这似乎是你的问题。
outlook = client.Dispatch('Outlook.Application')
#When button is clicked
def Click ():
message = outlook.CreateItem(0)
message.Subject= "My status"
message.To = "test@tst.com"
if(var.get()==1):
message.Body="Thanks im HAPPY !!"
message.Display()
if(var.get()==2):
message.Body="Pfff im sad:(("
message.Display()
试试这个:
def Click ():
outlook = client.Dispatch('Outlook.Application')
message = outlook.CreateItem(0)
message.Subject= "My status"
message.To = "test@tst.com"
if(var.get()==1):
message.Body="Thanks im HAPPY !!"
message.Display()
if(var.get()==2):
message.Body="Pfff im sad:(("
message.Display()