需要显示在3行而不是1行

时间:2014-07-11 18:48:10

标签: python tkinter

我希望的结果是有一个带有两个按钮的python窗口"显示信息" "退出"彼此相邻并拥有"显示信息"按钮在3个单独的行上显示我的姓名和地址 " Quit"然后停止该程序。点击。我几乎就在那里 - 文字全都在一条线上。

提前感谢。

# This program will demonstrate a button widget within a dialog box
# that shows my information.

# Call TK interface
import tkinter
# Call message box
import tkinter.messagebox

# Create class for GUI.


class MyGUI:
    def __init__(self):
        #Create the main window widget.
        self.main_window = tkinter.Tk()

        #Create button widget 1.
        self.my_button = tkinter.Button(self.main_window, \
                                        text='Show Info', \
                                        command=self.show_info)

        #Creat a quit button.
        self.quit_button = tkinter.Button(self.main_window, \
                                          text='Quit', \
                                          command=self.main_window.destroy)

        # Pack the buttons.
        self.my_button.pack(side='left')
        self.quit_button.pack(side='left')

        #Enter the tkinter main loop.
        tkinter.mainloop()

        #The do_somethings will be defined.
    def show_info(self):
        tkinter.messagebox.showinfo('Text', \
                                    'My Name'
                                    '123 Any Rd'
                                    'Town Fl, 12345')




my_gui = MyGUI()

4 个答案:

答案 0 :(得分:5)

在你已经定义了3行的行中没有按照你的想法行事...... Python会将这些字符串粉碎在一起,好像根本就没有返回(这就是你所看到的)。相反,试着把它放在那里:

def show_info(self):
    lines = ['My Name', '123 Any Rd', 'Town Fl, 12345']
    tkinter.messagebox.showinfo('Text', "\n".join(lines))

答案 1 :(得分:3)

看起来很简单,但对于这么几行,最优雅的解决方案就是用换行符(\n)结束每一行:

def show_info(self):
    tkinter.messagebox.showinfo('Text',
                                'My Name\n'
                                '123 Any Rd\n'
                                'Town Fl, 12345\n')

如果你有很多行(例如段落),你可以使用multi-line string

    def show_info(self):
        tkinter.messagebox.showinfo('Text', '''\
My Name
123 Any Rd
Town Fl, 12345''')

答案 2 :(得分:1)

只需要在你的信息文本中添加一些换行符(\ n)即可。只是将它写在多行上并不能使它成为多行文本。

答案 3 :(得分:1)

在文字中添加\n

tkinter.messagebox.showinfo('Text','My Name\n123 Any Rd\nTown Fl, 12345')