2014-07-11 39 views
2

我期望的结果是有一个python窗口,两个按钮“显示信息”“退出”相邻,并有“显示信息”按钮显示我的姓名和地址3条单独的行 ,然后在单击“退出”时停止该程序。我几乎在那里 - 文本虽然都在一行。需要显示在3行而不是1行

在此先感谢。

# 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

,您已经定义了3行的换行你在想什么... Python会打破那些串在一起,如果有根本没有回到那里(这是你所看到的)不这样做。相反,试着把它放在那里:

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

这工作完美 - 非常感谢您的及时回应。 – user3780539

1

只需要添加一些换行符(\ n)到您的信息文本。只是将它写在多行上并不会使其成为多行文本。

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''') 
1

添加\n在文本

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