Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter线程问题:system()最多接受1个参数(给定27个)_Python_Multithreading - Fatal编程技术网

Python Tkinter线程问题:system()最多接受1个参数(给定27个)

Python 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(

我有这个代码来安装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(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()