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

use*_*539 2 python tkinter

我想要的结果是有一个python窗口,其中两个按钮"显示信息""退出"彼此相邻,并让"显示信息"按钮在3个单独的行上显示我的姓名和地址,然后在"退出"时停止程序点击.我几乎就在那里 - 文字虽然在一条线上.

提前致谢.

# 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()
Run Code Online (Sandbox Code Playgroud)

Aje*_*ean 5

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

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


小智 5

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

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

如果您有很多行(例如段落),则可以使用多行字符串

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