Python Tkinter线程问题:system()最多接受1个参数(给定27个)
我有这个代码来安装PygamePython Tkinter线程问题:system()最多接受1个参数(给定27个),python,multithreading,Python,Multithreading,我有这个代码来安装Pygame import os import tkinter as tk import threading root = tk.Tk() canvas1 = tk.Canvas(root, width=300, height=300, bg='gray90', relief='raised') canvas1.pack() def run_command(command): # for i in range (5): threading.Thread(
import os
import tkinter as tk
import threading
root = tk.Tk()
canvas1 = tk.Canvas(root, width=300, height=300, bg='gray90', relief='raised')
canvas1.pack()
def run_command(command):
# for i in range (5):
threading.Thread(target=os.system, args=f'cmd /c "{command}"').start() # TypeError: system() takes at most 1
# argument (27 given)
button1 = tk.Button(text=' Run Command ', command=lambda: run_command("pip install pygame"), bg='green', fg='white',
font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 150, window=button1)
root.mainloop()
但它抛出了一个错误;TypeError:system()最多接受1个参数(给定27个)
我可以做os.system(f'cmd/c“{command}”)
,但是按钮冻结了,所以我不想这样。我如何修正我的错误
import tkinter as tk
import threading
root = tk.Tk()
canvas1 = tk.Canvas(root, width=300, height=300, bg='gray90', relief='raised')
canvas1.pack()
def run_command(command):
# for i in range (5):
threading.Thread(target=lambda: os.system(command)).start()
button1 = tk.Button(text=' Run Command ', command=lambda: run_command("pip install pygame"), bg='green', fg='white',
font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 150, window=button1)
root.mainloop()
试试看
请尝试此操作并查看。发生错误的原因是线程中的“args”参数。线程需要一个元组 将行更改为
threading.Thread(target=os.system,args=(f'cmd/c“{command}”).start()
解决了这个问题
完整代码:
import os
import tkinter as tk
import threading
root = tk.Tk()
canvas1 = tk.Canvas(root, width=300, height=300, bg='gray90', relief='raised')
canvas1.pack()
def run_command(command):
# for i in range (5):
print(os.system)
threading.Thread(target=os.system, args=(f'cmd /c "{command}"', )).start() # TypeError: system() takes at most 1
# argument (27 given)
button1 = tk.Button(text=' Run Command ', command=lambda: run_command("pip install pygame"), bg='green', fg='white',
font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 150, window=button1)
root.mainloop()
发生错误的原因是线程中的“args”参数。线程需要一个元组 将行更改为
threading.Thread(target=os.system,args=(f'cmd/c“{command}”).start()
解决了这个问题
完整代码:
import os
import tkinter as tk
import threading
root = tk.Tk()
canvas1 = tk.Canvas(root, width=300, height=300, bg='gray90', relief='raised')
canvas1.pack()
def run_command(command):
# for i in range (5):
print(os.system)
threading.Thread(target=os.system, args=(f'cmd /c "{command}"', )).start() # TypeError: system() takes at most 1
# argument (27 given)
button1 = tk.Button(text=' Run Command ', command=lambda: run_command("pip install pygame"), bg='green', fg='white',
font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 150, window=button1)
root.mainloop()