python - 如何在python tkinter中使两个按钮彼此相邻(并居中)?
问题描述
我正在制作一个 emial 客户端,我希望两个按钮(发送邮件和重置)水平(而不是垂直)彼此相邻。提前致谢(出于安全考虑,我的电子邮件和密码已替换为 asterix)
代码:
from tkinter import *
import tkinter as tk
from email.message import EmailMessage
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
window=Tk()
window.title('Email Client')
window.geometry('450x370')
window.iconbitmap('D:\PYTHON\IMAGES\icon_for_email_clien_Jy16u.ico')
textbox2=Text(window,width=50,height=10,bg='light grey')
label2=Label(window,text='Message')
textbox1=Text(window,width=50,height=1,bg='light grey')
textbox3=Text(window,width=50,height=1,bg='light grey')
label4=Label(window,text='Directory of File Attachment')
label1=Label(window,text='Subject')
label3=Label(window,text='')
def email_alert(subject, body, to):
msg = EmailMessage()
msg.set_content(body)
msg['subject'] = subject
msg['to'] = to
user = "******************"
msg['from'] = user
password = "***********"
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login(user, password)
server.send_message(msg)
server.quit()
if __name__ == '__main__':
def Send():
gd = textbox3.get('1.0','end-1c')
dialog = textbox2.get('1.0','end-1c')
subject = textbox1.get('1.0','end-1c')
body = dialog
try:
fromaddr = "********************"
toaddr = "*******************"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = subject
body = dialog
msg.attach(MIMEText(body, 'plain'))
filename = "Homework Attachment"
attachment = open(gd, "rb")
p = MIMEBase('application', 'octet-stream')
p.set_payload((attachment).read())
encoders.encode_base64(p)
p.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(p)
s = smtplib.SMTP('smtp.gmail.com', 587)
s.starttls()
s.login(fromaddr, "*************")
text = msg.as_string()
s.sendmail(fromaddr, toaddr, text)
s.quit()
except:
email_alert(subject, dialog, "************************")
def Reset():
textbox1.delete('1.0', 'end-1c')
textbox2.delete('1.0', 'end-1c')
textbox3.delete('1.0', 'end-1c')
label1.pack()
textbox1.pack()
label4.pack()
textbox3.pack()
label2.pack()
textbox2.pack()
label3.pack()
button1=Button(window,text='Send Email',width=15,height=1, command=Send)
button1.pack()
button2=Button(window,text='Reset',width=15,height=1, command=Reset)
button2.pack(pady = 10)
window.mainloop()
图片:
下面的两个按钮(称为发送电子邮件和重置),我希望它们水平相邻,以使 GUI 看起来更有吸引力。但是,我在执行此操作时遇到了麻烦,而且我还没有找到适合我的查询的答案。非常感谢任何帮助:D
解决方案
您必须在包中使用更多参数才能实现这一点。
- side ~ 要打包的那一面
- 锚〜在打包区域中放置小部件的位置
- expand ~ 是否使单元格扩展以接触它的邻居
button1=Button(window,text='Send Email',width=15,height=1, command=Send)
button1.pack(side='left', anchor='e', expand=True)
button2=Button(window,text='Reset',width=15,height=1, command=Reset)
button2.pack(side='right', anchor='w', expand=True)
推荐阅读
- python - Python - 按数字对(正负)整数列表进行排序
- codenameone - 时区、语言和国家列表
- apache-flink - 如何使用 Java 在 apache flink 中计算每秒事务数(TPS)
- java - Oracle OCI 驱动程序在密码到期警告时抛出 / 零错误
- google-cloud-data-fusion - 我们是否有谷歌云数据融合草案的到期日
- javascript - 如何从地图对象数组中检索 arr[0]?
- x86 - 尝试“sti”时出现一般保护错误
- c# - 有没有办法在linq C#的Where子句中的startsWith中添加'System.StringComparison.OrdinalIgnoreCase'
- ag-grid-react - Ag-grid 上下文菜单图标
- sql - SQL1109N 数据库管理器未能为 DB2 DSN 装入 gsk8ssl_64.dll SQLSTATE=42724