【问题标题】:Python Tkinter freezes on Button clickPython Tkinter 在按钮单击时冻结
【发布时间】:2020-03-05 14:52:28
【问题描述】:

我在我的 tkinter 项目中使用这个代码 sn-p 当我按下按钮时它立即冻结。 如何防止它冻结?

# Toggle Button
def toggle():
    if t_btn.config('text')[-1] == 'ON':
        t_btn.config(text='OFF')
        cmd = os.system('python test.py')
    #    cmd = 'python net_stat.py'
        op = subprocess.check_output(cmd, shell=True)
        list1.insert(Tk.END, op)

    else:
        t_btn.config(text='ON')
        r.quit()

t_btn = Tk.Button(page1, text="ON", width=12, command=toggle)
t_btn.pack(side=Tk.BOTTOM)

【问题讨论】:

  • 第一个您不想使用config() 来检查文本。请改用t_btn['text'] == 'ON'。如果您在切换功能的每一行之前放置一个打印语句,您可以找出应用程序卡住的位置。
  • 我按照你说的做了,它是 Compilig untill cmd = os.system 但它没有在 tkinter 的列表视图中添加元素。在命令 shell 中显示输出但 GUI 冻结我不知道为什么
  • 可能是因为您的 os.system 命令阻塞了主循环。你可能想在它自己的线程中运行它。

标签: python-3.x tkinter freeze


【解决方案1】:

这可能是因为当您按下按钮时,当您按下按钮时正在运行另一个文件(您正在调用正在运行 python 文件的 os.system('python test.py'))

【讨论】:

  • 但这一步很重要,我需要该文件在按钮单击时运行
  • test.py的内容是什么?
  • 它输出数据包信息,如数据包大小、源 IP、目标 IP 等
  • 嗯,我唯一能想到的是该脚本中有一个永无止境的 while 循环,或者您的网络速度很慢并且导致它冻结,但我有除了套接字,我从来没有在 python 中处理过任何网络东西,所以我恐怕无法帮助你,对不起。
  • 是的,有while循环,这个问题困扰了我很长时间,即使你有一些参考也没关系
猜你喜欢
  • 1970-01-01
  • 2021-07-04
  • 2018-06-11
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多