Python 为什么我的按钮文本在Tkinter中切换为两行

Python 为什么我的按钮文本在Tkinter中切换为两行,python,button,tkinter,Python,Button,Tkinter,我正在尝试创建一个非常简单的电子邮件程序。差不多完成了,但是我的按钮有问题。当前,文本在经过某个点后会重叠 我的按钮代码如下。我猜这可能与for循环有关: def mainFun(self): """Holds body of thing""" #Main Frame self.mainFrame = Frame(self) self.mainFrame.grid(row = 0, column = 2, sticky = N) mail = ima

我正在尝试创建一个非常简单的电子邮件程序。差不多完成了,但是我的按钮有问题。当前,文本在经过某个点后会重叠

我的按钮代码如下。我猜这可能与for循环有关:

def mainFun(self):
    """Holds body of thing"""

    #Main Frame
    self.mainFrame = Frame(self)
    self.mainFrame.grid(row = 0, column = 2, sticky = N)

    mail = imaplib.IMAP4_SSL('imap.gmail.com')#Connect to the Server
    mail.login('someemail.com', 'somepassword')#Login
    mail.list() #Different Gmail Labels
    mail.select("inbox") #Select the Label "inbox"

    result, data = mail.uid('search',None, "ALL")

    uid = data[0] #The data is a list
    uid_list = uid.split() #ids is a space separated string
    latest_email_uid = uid_list[-2] #Get the Latest

    for i in range(1, 11):

        x = -i
        email_number = i
        email_uid = uid_list[x]
        result, data = mail.uid('fetch',email_uid, "(RFC822)") #Fetch the Email's body (RFC822) for the given ID

        raw_email = data[0][1] #Raw data of the Email - needs to be parsed. Includes headers and the body

        email_message = email.message_from_string(raw_email) #Convert the raw email into string format

        self.newmessage = Button(self.mainFrame,
                                 text = "Email %d:  %s\n" % (email_number, email_message['Subject']),
                                 anchor = W)
        self.newmessage.config(height = 3, width = 100)
        self.newmessage.grid(column = 0, row = i, sticky = NW)

您是否考虑过某些数据中可能有额外的换行符或空格?此外,如果发生这种情况,您希望程序如何运行?按钮应该变得更高,还是数据应该被切断?@BryanOakley也许是这样,但我严重怀疑,因为在Gmail中没有新行。但是,为了消除这个问题,我是否需要在Python(2.7.3)中消除字符串中的所有换行符?我怀疑这不是一个好的回答。这很容易检查,只需进行一点调试。要回答您的特定问题,您可以使用
.strip()
(例如:
email\u message['Subject'].strip()
)去除所有前导和尾随空格。此外,您自己似乎正在向按钮添加一个换行符,这将导致文本下方出现一个空行。