广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python Tkinter Gui运行不卡顿的方法是什么
  • 539
分享到

Python Tkinter Gui运行不卡顿的方法是什么

2023-07-05 04:07:52 539人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python Tkinter Gui运行不卡顿的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python Tkinter Gui运行不卡顿的

这篇文章主要介绍了python Tkinter Gui运行不卡顿的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python Tkinter Gui运行不卡顿的方法是什么文章都会有所收获,下面我们一起来看看吧。

    前言

    Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 windowsMacintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中,Python 使用 Tkinter 可以快速的创建 GUI 应用程序,由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。

    一、问题描述

    Python GUI程序运行时,如果点击按钮运行了一个比较耗时的操作,那么界面会卡死提示未响应,导致无法操作其他组件。

    二、解决思路

    引用线程来执行Button按钮绑定事件的函数,现实运行不卡顿,解决界面卡死。

    三、运行效果

    Python Tkinter Gui运行不卡顿的方法是什么

    四、代码示例

    1.执行Button按钮绑定事件函数的线程方法

    import threadingdef thread_it(func, *args):    """ 将函数打包进线程 """    self.myThread = threading.Thread(target=func, args=args)    self.myThread .setDaemon(True)  # 主线程退出就直接让子线程跟随退出,不论是否运行完成。    self.myThread .start()

    2.完整代码

    import sysimport timeimport tkinter as tkfrom tkinter.messagebox import askyesnofrom tkinter.scrolledtext import ScrolledTextimport threadinGClass TestGui(object):    def __init__(self, init_window_name):        self.init_window_name = init_window_name        self.init_window_name.title("将button方法打包进线程,现实运行不卡顿测试")  # 设置窗口标题        self.init_window_name.geometry('700x350')  # 设置窗口大小        """ 点击右上角关闭窗体弹窗事件 """        self.init_window_name.protocol('WM_DELETE_WINDOW', lambda: self.thread_it(self.clos_window))        """ 组件容器创建 """        self.log_frame = tk.Frame(self.init_window_name)  # 创建存放日志组件的容器        self.log_frame.grid(padx=20, pady=0, row=1, column=0, sticky=tk.W)        self.runs_button_frame = tk.Frame(self.init_window_name)  # 创建存放日志组件的容器        self.runs_button_frame.grid(padx=20, pady=0, row=2, column=0, sticky=tk.W)        """ 日志框 """        self.run_log = ScrolledText(self.log_frame, font=('楷体', 13), width=69, height=17)        self.run_log.grid(padx=20, pady=5, row=0, column=0)        """ 操作按钮 """        self.start_run1 = tk.Button(self.runs_button_frame, text='开始打印1', font=('行楷', 15, 'bold'), fg="white", bg="#1E90FF", width=25, command=lambda: self.thread_it(self.print1))        self.start_run1.grid(padx=20, pady=0, row=0, column=1)        self.start_run2 = tk.Button(self.runs_button_frame, text='开始打印2', font=('行楷', 15, 'bold'), fg="white", bg="#1E90FF", width=25, command=lambda: self.thread_it(self.print2))        self.start_run2.grid(padx=35, pady=0, row=0, column=2)    def thread_it(self, func, *args):        """ 将函数打包进线程 """        self.myThread = threading.Thread(target=func, args=args)        self.myThread .setDaemon(True)  # 主线程退出就直接让子线程跟随退出,不论是否运行完成。        self.myThread .start()    def print1(self):        for i in range(100):            tip_content = f'第{i}次打印 - 我是小洲1'            self.run_log_print(message=tip_content)            time.sleep(0.1)  # 睡眠        self.run_log_print(message='我是小洲1 - 打印完成')    def print2(self):        for i in range(100, 200):            tip_content = f'第{i}次打印 - 我是小洲2'            self.run_log_print(message=tip_content)            time.sleep(0.05)  # 睡眠        self.run_log_print(message='我是小洲2 - 打印完成')    def run_log_print(self, message):        self.run_log.config(state=tk.NORMAL)        self.run_log.insert(tk.END, "\n" + message + "\n")        self.run_log.see(tk.END)        self.run_log.update()        self.run_log.config(state=tk.DISABLED)    def clos_window(self):        ans = askyesno(title='小洲助手v1.1警告', message='是否确定退出程序?\n是则退出,否则继续!')        if ans:            self.init_window_name.destroy()            sys.exit()        else:            return Noneif __name__ == '__main__':    """ 把button方法打包进线程,现实运行不卡顿 """    """ 实例化出一个父窗口 """    init_window = tk.Tk()    """ tk界面置顶 """    init_window.attributes("-topmost", 1)    """ 创建Gui类对象 """    test_gui = TestGui(init_window)    """ 初始化GUi组件 """    init_window.mainloop()

    五、组件的具体使用

    注意:代码中的关键部分都写了注释,本篇博客只是介绍了如何解决tk界面运行卡顿的问题。

    关于“Python Tkinter Gui运行不卡顿的方法是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python Tkinter Gui运行不卡顿的方法是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网Python频道。

    --结束END--

    本文标题: Python Tkinter Gui运行不卡顿的方法是什么

    本文链接: https://www.lsjlt.com/news/349444.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python Tkinter Gui运行不卡顿的方法是什么
      这篇文章主要介绍了Python Tkinter Gui运行不卡顿的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python Tkinter Gui运行不卡顿的...
      99+
      2023-07-05
    • Python Tkinter Gui 运行不卡顿,多线程解决界面卡死问题
      Python Tkinter Gui 运行不卡顿,多线程解决界面卡死问题 文章目录 Python Tkinter Gui 运行不卡顿,多线程解决界面卡死问题前言一、问题描述二、解决思路三、运...
      99+
      2023-08-31
      python tkinter Gui 图形界面 tk运行不卡顿
    • Python中web嵌入GUI的方法是什么
      这篇文章主要讲解了“Python中web嵌入GUI的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中web嵌入GUI的方法是什么”吧!随着Web技术的蓬勃发展,以网页形...
      99+
      2023-06-01
    • android界面卡顿的原因及解决方法是什么
      Android界面卡顿的原因可能有很多,包括以下几个常见的原因:1. 主线程阻塞:当在主线程中执行耗时操作或者频繁的UI更新时,可能...
      99+
      2023-10-18
      android
    • ubuntu运行python文件的方法是什么
      在Ubuntu上运行Python文件的方法有多种,以下是其中几种常见的方法:1. 终端命令行:打开终端,使用`python`命令后加...
      99+
      2023-09-07
      ubuntu python
    • win11玩游戏卡顿的原因及解决方法是什么
      Win11玩游戏卡顿的原因可能有多种,包括硬件配置不足、驱动程序冲突、系统设置不当、后台程序占用资源等。以下是一些可能的解决方法:1...
      99+
      2023-10-18
      win11
    • python添加运行配置的方法是什么
      要在Python中添加运行配置,可以使用以下方法之一:1. 使用命令行参数:在命令行中运行Python脚本时,可以添加参数来配置运行...
      99+
      2023-09-25
      python
    • 解决Win7下Jdeveloper黑屏、卡顿、反应慢的方法是什么
      本篇内容主要讲解“解决Win7下Jdeveloper黑屏、卡顿、反应慢的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“解决Win7下Jdevelope...
      99+
      2022-10-18
    • windows运行docker的方法是什么
      要在Windows上运行Docker,你可以按照以下步骤进行操作:1. 下载并安装Docker Desktop for Window...
      99+
      2023-10-10
      windows docker
    • ubuntu运行pycharm的方法是什么
      要在Ubuntu上运行PyCharm,你可以按照以下步骤进行操作:1. 下载PyCharm:在JetBrains官方网站上下载适用于...
      99+
      2023-10-09
      ubuntu pycharm
    • golang设置运行的方法是什么
      今天小编给大家分享一下golang设置运行的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、编译在 Golang...
      99+
      2023-07-05
    • Python字典的运算方法是什么
      本篇内容介绍了“Python字典的运算方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题描述怎样在数据字典中执行一些计算操作(比如...
      99+
      2023-06-22
    • python运行出错的原因及解决方法是什么
      Python运行出错的原因很多,常见的包括语法错误、逻辑错误、模块导入错误等。解决方法也因错误的类型而异,以下是一些常见的解决方法:...
      99+
      2023-08-08
      python
    • python tkinter控件treeview数据列表显示的方法是什么
      这篇文章主要介绍了python tkinter控件treeview数据列表显示的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python tkinter控件treeview数据列...
      99+
      2023-06-26
    • docker运行ubuntu镜像的方法是什么
      使用Docker运行Ubuntu镜像的方法是:1. 首先,安装Docker引擎。根据你的操作系统,从Docker官方网站下载适合你的...
      99+
      2023-09-18
      ubuntu docker
    • ubuntu运行windows程序的方法是什么
      在Ubuntu上运行Windows程序有以下几种方法:1. 使用Wine:Wine是一个兼容层,可以在Linux系统上运行Windo...
      99+
      2023-09-07
      ubuntu windows
    • ubuntu运行c程序的方法是什么
      在Ubuntu上运行C程序的方法有以下几种: 使用终端编译和运行:打开终端,进入C程序所在的目录,使用gcc编译器编译程序,然后...
      99+
      2023-10-25
      ubuntu
    • 用nodejs运行脚本的方法是什么
      这篇文章主要讲解了“用nodejs运行脚本的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“用nodejs运行脚本的方法是什么”吧! ...
      99+
      2022-10-19
    • eclipse运行php文件的方法是什么
      要在Eclipse中运行PHP文件,需要安装并配置Eclipse的PHP开发环境。以下是一些步骤: 下载并安装Eclipse I...
      99+
      2023-10-27
      eclipse php
    • nodejs运行js文件的方法是什么
      要在Node.js中运行JavaScript文件,可以通过以下步骤进行操作:1. 首先,确保已安装Node.js。可以在终端或命令提...
      99+
      2023-08-25
      nodejs js
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作