通过tkinter获取和计算东西

时间:2017-08-18 15:49:15

标签: python tkinter

我想知道如何使用tkinter按钮计算内容。我制作了一个简单的程序来计算秒到小时:分钟:秒。用户使用秒框上的条目小部件输入整数,当他们按计算时,他们通过转换的时间线获得结果。我对如何开始计算感到困惑。我知道你通过.get得到了整数,但我仍然坚持如何做到并以h:m:s格式计算它。到目前为止,这是我的代码。

import tkinter
from tkinter import *




class TimeConverterUI():


    def __init__(self):

        self.root_window = Tk()
        self.root_window.geometry('400x150')
        self.root_window.title('Seconds Converter')
        self.text()
        self.calculate_button()
        self.quit_button()
        self.root_window.wait_window()


    def text(self):

        row_label = tkinter.Label(
              master = self.root_window, text = 'Seconds: ')

        row_label.grid( row = 0, column = 0, columnspan=2, padx=10, pady=10,
                           sticky = tkinter.W)

        secondsEntry = Entry(master = self.root_window)
        secondsEntry.grid(row = 0, column = 1)

        row_label = tkinter.Label(
              master = self.root_window, text = 'Converted Time(H:M:S): ').grid(row=1)

    def calculate_button(self):

        quit = Button(self.root_window, text = "Calculate", command = self.calculate)
        quit.grid(row = 3, column = 0, columnspan = 3, pady=20,
                  sticky = tkinter.W)

    def calculate(self):

        pass

    def quit_button(self):

        quit = Button(self.root_window, text = "Quit", command = self.quit)
        quit.grid(row = 3, column = 3, columnspan = 3, pady=20,
                  sticky = tkinter.E)

    def quit(self) -> bool:

        self.root_window.destroy()
        return True





if __name__ == '__main__':

    convert=TimeConverterUI()

1 个答案:

答案 0 :(得分:0)

如果您以后想要使用row_label,请先将此代码分为2行,因为这将返回NoneType。您应首先定义它,然后在其上使用.grid(就像您的按钮一样)。

row_label = tkinter.Label(
              master = self.root_window, text = 'Converted Time(H:M:S): ').grid(row=1)

现在您可以创建另一个标签来显示结果。请记住将self.放在其名称前面,以便在calculate函数中使用它。另外,出于同样的原因,将secondsEntry更改为self.secondsEntry
现在您只需在该函数中使用int(self.secondsEntry.get())并执行所需的计算。
然后将结果设置为结果标签为.configure(text=str(result))