python怎么用tkinter

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么用tkinter相关的知识,希望对你有一定的参考价值。

参考技术A Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。
  对于稍有GUI编程经验的人来说,Python的Tkinter界面库是非常简单的。python的GUI库非常多,选择Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,三则是从需求出发,Python作为一种脚本语言,一种胶水语言,一般不会用它来开发复杂的桌面应用,它并不具备这方面的优势,使用Python,可以把它作为一个灵活的工具,而不是作为主要开发语言,那么在工作中,需要制作一个小工具,肯定是需要有界面的,不仅自己用,也能分享别人使用,在这种需求下,Tkinter是足够胜任的!

用 Python 和 Tkinter 制作倒数计时器?

【中文标题】用 Python 和 Tkinter 制作倒数计时器?【英文标题】:Making a countdown timer with Python and Tkinter? 【发布时间】:2012-05-22 17:50:47 【问题描述】:

我想使用我的倒计时功能在 Tkinter 中设置一个标签。现在它所做的只是将标签设置为“10”,一旦达到 10,我真的不明白为什么。此外,即使我将计时器打印到终端而不是“时间到了!”位从不打印。

import time
import tkinter as tk

class App():
    def __init__(self):
        self.root = tk.Tk()
        self.label = tk.Label(text="null")
        self.label.pack()
        self.countdown()
        self.root.mainloop()

    # Define a timer.
    def countdown(self):
        p = 10.00
        t = time.time()
        n = 0
        # Loop while the number of seconds is less than the integer defined in "p"
        while n - t < p: 
            n = time.time()
            if n == t + p:
                self.label.configure(text="Time's up!")
            else:
                self.label.configure(text=round(n - t))

app=App()

【问题讨论】:

这是code example of a countdown implemented using Tkinter 【参考方案1】:

Tkinter 已经有一个无限循环在运行(事件循环),并且有一种方法可以安排在一段时间后运行(使用after)。您可以通过编写一个每秒调用一次来更新显示的函数来利用这一点。您可以使用类变量来跟踪剩余时间。

import Tkinter as tk

class ExampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.label = tk.Label(self, text="", width=10)
        self.label.pack()
        self.remaining = 0
        self.countdown(10)

    def countdown(self, remaining = None):
        if remaining is not None:
            self.remaining = remaining

        if self.remaining <= 0:
            self.label.configure(text="time's up!")
        else:
            self.label.configure(text="%d" % self.remaining)
            self.remaining = self.remaining - 1
            self.after(1000, self.countdown)

if __name__ == "__main__":
    app = ExampleApp()
    app.mainloop()

【讨论】:

这解释了很多,谢谢。我想知道为什么即使我用几种不同的方式重写了最后一项,它也只会在到达最后一项后更新。 @RyanHasse:只有当 Tkinter 可以响应告诉它更新显示的事件时,才会更新显示。这些事件仅由事件循环处理。如果你有自己的循环,它会饿死事件循环,阻止重绘请求的发生。

以上是关于python怎么用tkinter的主要内容,如果未能解决你的问题,请参考以下文章

用Python写了一个上课点名系统(附源码)

用Python写了一个上课点名系统(附源码)

python --Tkinter详解

学习笔记Python - tkinter

Python如何完成一个上课点名系统!

python写图形界面