当我的脚本有.pyw扩展名时,该功能subprocess.Popen不起作用,但如果我使用.py扩展名,它就起作用了。其实扩展不是那么重要,重点是我是否使用终端运行脚本,如果我不使用它我有问题,否则没有问题。
这种奇怪的行为仅发生在我使用 Python 3.9.1 或 3.9.2(当前可用的最后一个版本)的 PC 中。但是,我有另一台装有 Python 3.9.0 的 PC,并且该问题不存在。
我给你举个例子。这里我有两个脚本,下面是第一个名为main_script.pyw:
from tkinter import *
from tkinter import ttk
import sys, subprocess
def MyFunction():
subprocess.Popen(["start", sys.executable, "script.py"], shell=True)
parent=Tk()
parent.geometry("300x250+370+100")
parent.title("Test")
TestButton=ttk.Button(parent, text="start", width=16, command=MyFunction)
TestButton.place(x=10, y=10)
parent.mainloop()
Run Code Online (Sandbox Code Playgroud)
这是第二个名为script.py:
a=input("give me a number: ")
Run Code Online (Sandbox Code Playgroud)
两者都放在同一个目录下。subprocess.Popen只有当主脚本的扩展名是 时.py,用户才能使用该函数启动第二个脚本,否则不能。我该如何解决这个问题?是BUG吗?
我也附上了一个GIF:
更新!1
我尝试在虚拟机中安装 Python 3.9.0,在那里我发现了之前描述的相同问题!所以,我不明白为什么在我的 PC 中,使用相同版本的脚本可以工作。如果我python --version在终端中输入,则输出为Python 3.9.0. 这是另一个 GIF 向您展示它的工作原理:
在安装路径 ( …
我有一个由 ttk 标签中的多行组成的文本。默认情况下,文本从左边框到右边框显示,没有任何一种“对齐”选项。我的目标是将文本传播到所有标签上。我不想将文本右对齐、左对齐、居中对齐,等等。我想对齐它,尤其是当您在 Microsoft Word 中对齐文本时。我怎样才能达到我的目标?
使用 openpyxl 我在一个二元对象中编写了 excel 文件,但是当我尝试通过“write”方法保存它时,出现以下异常:
回溯(最近一次调用最后一次):文件“stack.py”,第 13 行,在 file.write(output) 中 TypeError:需要类似字节的对象,而不是“_io.BytesIO”
我该如何解决这个问题?下面是一个简单的例子:
import openpyxl
from io import BytesIO
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "TEST"
output = BytesIO()
wb.save(output)
file = open("ciao.xlsx", "wb")
file.write(output) # <--- this instruction doesn't work..
file.close()
Run Code Online (Sandbox Code Playgroud)
注意:我已经知道我可以直接使用 openpyxl 保存 excel 文件,但在我的真实代码中,我需要将其保存在二进制文件中。
我有一个关于 Tkinter 中铃声的简单问题。当我的进度条完成或当我打开带有该filedialog.asksaveasfilename()功能的消息框窗口时,如何添加其中之一?