Tkinter使用附加打印到标签

时间:2018-12-25 21:20:27

标签: python button tkinter label

我一直在尝试返回功能printLabel以打印“ Hello 世界!”,但我不太确定如何进一步发展:

我想使用lambda以便在单击按钮时将我的附加字符串打印在标签中,但这在未单击按钮的情况下显示。我的 代码如下:

from tkinter import *

class Example(Frame):   

    def printLabel(self):
        self.hello = []
        self.hello.append('Hello\n')
        self.hello.append('World!')
        print(self.hello)  
        return(self.hello)        

    def __init__(self, root):
        Frame.__init__(self, root)
        self.buttonA()
        self.viewingPanel()

    def buttonA(self):
        self.firstPage = Button(self, text="Print Text", bd=1, anchor=CENTER, height = 13, width = 13, command=lambda: self.printLabel())
        self.firstPage.place(x=0, y=0)        

    def viewingPanel(self):  
        self.panelA = Label(self, bg='white', width=65, height=13, padx=3, pady=3, anchor=CENTER, text="{}".format(self.printLabel()))
        self.panelA.place(x=100, y=0)        


def main():
    root = Tk()
    root.title("Tk")
    root.geometry('565x205')
    app = Example(root)
    app.pack(expand=True, fill=BOTH)
    root.mainloop()

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

我对您的代码做了一些修改,它应该可以按照您想要的方式工作:

from tkinter import *

class Example(Frame):  

    def printLabel(self):
        self.hello.append('Hello\n')
        self.hello.append('World!')  
        return(self.hello) 

    # Added 'updatePanel' method which updates the label in every button press.
    def updatePanel(self):
        self.panelA.config(text=str(self.printLabel()))

    # Added 'hello' list and 'panelA' label in the constructor.
    def __init__(self, root):
        self.hello = []
        self.panelA = None
        Frame.__init__(self, root)
        self.buttonA()
        self.viewingPanel()

    # Changed the method to be executed on button press to 'self.updatePanel()'.
    def buttonA(self):
        self.firstPage = Button(self, text="Print Text", bd=1, anchor=CENTER, height = 13, width = 13, command=lambda: self.updatePanel())
        self.firstPage.place(x=0, y=0)        

    # Changed text string to be empty.
    def viewingPanel(self):  
        self.panelA = Label(self, bg='white', width=65, height=13, padx=3, pady=3, anchor=CENTER, text="")
        self.panelA.place(x=100, y=0)        


def main():
    root = Tk()
    root.title("Tk")
    root.geometry('565x205')
    app = Example(root)
    app.pack(expand=True, fill=BOTH)
    root.mainloop()

if __name__ == '__main__':
    main()