Python tkinter按钮在使用它调用其他脚本后保持单击状态

Python tkinter按钮在使用它调用其他脚本后保持单击状态,python,selenium,button,tkinter,Python,Selenium,Button,Tkinter,它调用的脚本将打开一个新的浏览器窗口,在该窗口中输入完文本后,它将打开一个新的浏览器窗口并循环。 同时,tkinter按钮在视觉上保持单击状态 Tkinter是单线程的:它一次只能做一件事。脚本运行时,GUI将被冻结。您需要执行线程、多处理,或者找到其他方法将其他脚本合并到GUI中 Tkinter是单线程的:它一次只能做一件事。脚本运行时,GUI将被冻结。您需要执行线程、多处理,或者找到其他方法将其他脚本合并到GUI中 Tk GUI冻结的原因是您的所有东西都在一个线程上运行。主循环由submit

它调用的脚本将打开一个新的浏览器窗口,在该窗口中输入完文本后,它将打开一个新的浏览器窗口并循环。
同时,tkinter按钮在视觉上保持单击状态

Tkinter是单线程的:它一次只能做一件事。脚本运行时,GUI将被冻结。您需要执行线程、多处理,或者找到其他方法将其他脚本合并到GUI中

Tkinter是单线程的:它一次只能做一件事。脚本运行时,GUI将被冻结。您需要执行线程、多处理,或者找到其他方法将其他脚本合并到GUI中

Tk GUI冻结的原因是您的所有东西都在一个线程上运行。主循环由submit函数调用拖拽,该调用必须花费“很长时间”,因此当您单击按钮时,您可能会在Tk窗口中看到“无响应”。要解决这个问题,您需要为submit生成一个单独的线程来运行,这样mainloop就可以继续执行它的任务,并防止Tk窗口冻结

这是通过线程实现的。不要让按钮直接调用submit,而是让按钮调用一个函数来启动一个新线程,然后启动submit。然后创建另一个函数来检查提交线程的状态。您也可以添加一个状态栏

import tkinter as tk
from tkinter import filedialog, Text
from subprocess import call
import os

root = tk.Tk()

def buttonClick():
    print('Button is clicked')


def openAgenda():
    call("cd '/media/emilia/Linux/Programming/PycharmProjects/SmartschoolSelenium' && python3 SeleniumMain.py",
         shell=True)
    return


canvas = tk.Canvas(root, height=700, width=700, bg='#263D42')
canvas.pack()

frame = tk.Frame(root, bg='white')
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1)

openFile = tk.Button(root, text='Open file', padx=10,
                     pady=5, fg="white", bg='#263D42', command=openAgenda)

openFile.pack()

root.mainloop()

TKGUI冻结的原因是您的所有内容都在一个线程上运行。主循环由submit函数调用拖拽,该调用必须花费“很长时间”,因此当您单击按钮时,您可能会在Tk窗口中看到“无响应”。要解决这个问题,您需要为submit生成一个单独的线程来运行,这样mainloop就可以继续执行它的任务,并防止Tk窗口冻结

这是通过线程实现的。不要让按钮直接调用submit,而是让按钮调用一个函数来启动一个新线程,然后启动submit。然后创建另一个函数来检查提交线程的状态。您也可以添加一个状态栏

import tkinter as tk
from tkinter import filedialog, Text
from subprocess import call
import os

root = tk.Tk()

def buttonClick():
    print('Button is clicked')


def openAgenda():
    call("cd '/media/emilia/Linux/Programming/PycharmProjects/SmartschoolSelenium' && python3 SeleniumMain.py",
         shell=True)
    return


canvas = tk.Canvas(root, height=700, width=700, bg='#263D42')
canvas.pack()

frame = tk.Frame(root, bg='white')
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1)

openFile = tk.Button(root, text='Open file', padx=10,
                     pady=5, fg="white", bg='#263D42', command=openAgenda)

openFile.pack()

root.mainloop()
读啊读啊