利用PySimpleGUI设计MySQL插入脚本,实现主线程运行界面,子线程进行数据循环插入
时间: 2024-04-13 08:30:44 浏览: 135
要实现主线程运行界面,同时在子线程中循环进行数据插入,您可以使用Python的`threading`模块来创建子线程。在子线程中使用循环来进行数据插入操作,而主线程则负责运行PySimpleGUI界面。
以下是一个示例代码,演示如何实现您的需求:
```python
import PySimpleGUI as sg
import mysql.connector
import threading
def insert_data():
# 连接到MySQL数据库
conn = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
cursor = conn.cursor()
# 循环插入数据
for i in range(10):
data = f"Data {i+1}"
# 插入数据
sql = "INSERT INTO your_table (column_name) VALUES (%s)"
values = (data,)
cursor.execute(sql, values)
conn.commit()
# 关闭连接
cursor.close()
conn.close()
def worker_thread():
insert_data()
# 数据插入完成后,更新界面上的按钮状态
window["-EXECUTE-"].update(disabled=False)
# 创建界面布局
layout = [
[sg.Button("执行", key="-EXECUTE-", disabled=False)]
]
# 创建窗口
window = sg.Window("插入数据界面", layout)
# 事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == "-EXECUTE-":
# 禁用按钮,防止重复点击
window["-EXECUTE-"].update(disabled=True)
# 创建并启动子线程
thread = threading.Thread(target=worker_thread)
thread.start()
# 关闭窗口
window.close()
```
在这个示例中,我们创建了一个`insert_data`函数来执行循环的数据插入操作。在子线程的`worker_thread`函数中,我们调用`insert_data`函数来执行数据插入。在主线程的事件循环中,当点击"执行"按钮时,我们使用`window["-EXECUTE-"].update(disabled=True)`来禁用按钮,以防止重复点击。当子线程完成数据插入后,我们使用`window["-EXECUTE-"].update(disabled=False)`来更新按钮状态,使其可点击。
阅读全文