tk界面多线程,使用队列控制

发布时间 2023-12-08 11:22:36作者: ljn19961215
  • 主程序

# 创建一个队列对象
q = queue.Queue()
qq = queue.Queue()
thread1 = Tkui(q,qq)
# thread2 = MyThread("Thread 2")
# 启动线程
thread1.start()
while True:
# 从队列中获取数据
data = q.get()
df1 = dataworker(data)
data = q.get()
df2 = dataworker(data,number=15)
print(df1)
print(df2)
result = "2322"
qq.put(result)
  • tk程序

class Tkui(threading.Thread):

def __init__(self, q,qq):

threading.Thread.__init__(self)
self.q = q
self.qq = qq

def rungo(self):
username = self.username_entry.get()
password = self.password_entry.get()
run1 = Compare(username,password)
df1 = run1.run()
self.q.put(df1)
run2 = Compare1(username, password)
df2 = run2.run()
self.q.put(df2)

def run(self):

self.root = Tk()
self.root.title("在途冲销")
self.root.geometry("220x200") # 增加窗口高度以适应更多的组件
# 创建输入框
Label(self.root, text="用户名").grid(row=0, column=0)
self.username_entry = Entry(self.root)
self.username_entry.insert(0, "jingl35")
self.username_entry.grid(row=0, column=1)

Label(self.root, text="密码").grid(row=1, column=0)
self.password_entry = Entry(self.root, show="*")
self.password_entry.insert(0, 'Save2310')
self.password_entry.grid(row=1, column=1)


# 创建按钮
Button(self.root, text="转在途", command=self.rungo).grid(row=5, column=0)
Button(self.root, text="冲 销", command=self.rungo).grid(row=5, column=1)
Button(self.root, text="打开配置文件", command=self.open_result_file).place(relx=0.3, rely=1.0, anchor='sw')

# 运行主窗口的消息循环
self.root.mainloop()

def open_result_file(self):
jieguo = self.qq.get()
# 打开结果文件的代码
import pandas as pd

# 检查文件是否存在
try:
file = open('data.csv', 'r+')
file.truncate(0) # 清空文件内容
file.close()
print("文件已存在,已清空内容")
except IOError:
file = open('data.csv', 'w')
file.close()
print("文件不存在,已创建")

# 创建一个DataFrame
data = jieguo

# 将DataFrame写入CSV文件
data.to_csv('data.csv', index=False)

print("DataFrame已写入文件")

import os
csv_file = os.path.abspath('data.csv')
os.system(f'start "" "et" "{csv_file}"')