【问题标题】:TKinter math output to canvas.create_textTKinter 数学输出到 canvas.create_text
【发布时间】:2013-11-29 13:31:36
【问题描述】:

我正在尝试计算公式并将其输出显示为 TKinter 中的表格。由于它不起作用,我只是想获得一个简单的结果并将其打印到画布小部件。当这开始工作时,我将完成整个贷款公式。因为它是我在 GUI 或控制台中没有输出。 这甚至可以将计算结果作为文本放在 canvas.create_text 中吗?

from tkinter import * # Import tkinter

width = 500
height = 500

class MainGUI:
    def __init__(self):
        window = Tk() # Create a window
        window.title(" Loan Schedule ") # Set title

        frame1 = Frame(window)
        frame1.grid(row = 1, column = 1)

        Label(frame1, text = " Loan Amount ").grid(row = 1, column = 1, sticky = W)
        self.v1 = StringVar()
        Entry(frame1, textvariable = self.v1, justify = RIGHT).grid(row = 1, column = 2)

        Label(frame1, text = " Years ").grid(row = 1, column = 3, sticky = W)
        self.v2 = StringVar()
        Entry(frame1, textvariable = self.v2, justify = RIGHT).grid(row = 1, column = 4)

        btCalculate = Button(frame1, text = " Calculate ", command = self.calculate()).grid(row = 1, column = 5, sticky = E)

        frame2 = Frame(window)
        frame2.grid(row = 2, column = 1)

        self.canvas = Canvas(frame2, width = width, height = height, bg = "white")
        self.canvas.pack()

        self.canvas.create_text(25, 25, text = self.calculate(), tags = "text")       

        window.mainloop() # Create an event loop

    def calculate(self):
        result = self.v1.get() + self.v2.get()
        print(result)
        return result

MainGUI()

【问题讨论】:

    标签: python canvas tkinter


    【解决方案1】:

    command 要求函数名不带 ()

    command = self.calculate
    

    现在可以了

    from tkinter import * # Import tkinter
    
    width = 500
    height = 500
    
    class MainGUI:
        def __init__(self):
            window = Tk() # Create a window
            window.title(" Loan Schedule ") # Set title
    
            frame1 = Frame(window)
            frame1.grid(row = 1, column = 1)
    
            Label(frame1, text = " Loan Amount ").grid(row = 1, column = 1, sticky = W)
            self.v1 = StringVar()
            Entry(frame1, textvariable = self.v1, justify = RIGHT).grid(row = 1, column = 2)
    
            Label(frame1, text = " Years ").grid(row = 1, column = 3, sticky = W)
            self.v2 = StringVar()
            Entry(frame1, textvariable = self.v2, justify = RIGHT).grid(row = 1, column = 4)
    
            btCalculate = Button(frame1, text = " Calculate ", command = self.calculate).grid(row = 1, column = 5, sticky = E)
    
            frame2 = Frame(window)
            frame2.grid(row = 2, column = 1)
    
            self.canvas = Canvas(frame2, width = width, height = height, bg = "white")
            self.canvas.pack()
    
            self.canvas.create_text(55, 10, text = self.add_text(), tags = "text")       
    
            window.mainloop() # Create an event loop
    
        def calculate(self):
            result = int(self.v1.get()) + int(self.v2.get())
            self.canvas.create_text(25, 25, text = result, tags = "text")          
            print(result)
            return result
    
        def add_text(self):
            return "HELLO WORLD"
    
    MainGUI()
    

    顺便说一句:下面的行意味着 - 运行 self.calculate() 并将结果分配给 command

    command = self.calculate()
    

    【讨论】:

    • 啊哈,我明白了。我缺少的内容是将结果写入画布的计算函数中的 self.canvas.create... 行。那是我错过或不记得我能做的事情。感谢您的提示,非常有帮助!
    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    相关资源
    最近更新 更多