小编pro*_*bat的帖子

pyinstaller 单个 EXE 文件 - tkinter 主窗口标题中的 ico 图像

我在 Stack Overflow 上找到了一些关于此的信息,并一直在尝试,但它对我不起作用。我需要社区的帮助:)

正如标题所示,我想将 *.ico 添加到我的 tkinter 窗口中。问题是当使用 pyinstaller 创建单个 EXE 文件时,这不是很直接。下面正是我根据 Stack Overflow 上收集的信息实现的。在 64 位机器上使用 Python 3.5。

我的脚本的名称是calculator.py ico的名称是calculator.ico

1. 我将以下代码行添加到我的 Python 脚本中:

import os
import sys

datafile = "calculator.ico"
if not hasattr(sys, "frozen"):
    datafile = os.path.join(os.path.dirname(__file__), datafile)
else:
    datafile = os.path.join(sys.prefix, datafile)


window = tkinter.Tk()
window.iconbitmap(default=datafile)
Run Code Online (Sandbox Code Playgroud)

2a. 然后,我使用以下命令使用 pyinstaller 构建了单个 EXE 文件:

pyinstaller -w -F -i "C:\PythonProjects\Calc\calculator.ico" calculator.py
Run Code Online (Sandbox Code Playgroud)

2b. 我还尝试使用以下命令构建我的单个 EXE 文件,看看它是否有帮助:

pyinstaller --onefile --windowed --icon=calculator.ico calculator.py
Run Code Online (Sandbox Code Playgroud)

3. pyinstaller 构建单个 EXE 文件后,我向 *.spec 文件添加了一些内容 - 下面是包含添加内容的完整 …

python exe tkinter pyinstaller

6
推荐指数
1
解决办法
7651
查看次数

Python:openpyxl将字体更改为粗体

我正在Windows上使用Python 3.6版和最新版本的openxlpy模块(v2.4.8)。

我想将某个单元格中的某些字体更改为粗体,但是我不希望该单元格中包含的所有文本都为粗体。简而言之,我将数据保存到使用openxlpy创建的新Excel工作簿中。我在一个单元格中保存了多行数据。我只希望每个单元格的第一行为粗体。

我已经在openpyxl文档和在线中到处搜索了,但是什么也找不到。在我看来,您只能将字体样式应用于似乎不合适的整个单元。在Microsoft Excel中,您可以将不同的字体样式应用于一个单元格中的不同数据。

总之,我只想将单元格中的某些文本加粗,而不要将单元格的全部内容加粗。

python excel fonts openpyxl

6
推荐指数
1
解决办法
5473
查看次数

如何使用 StdLib 和 Python 3 在一定范围内并行化迭代?

我几天来一直在寻找这个问题的答案,但没有结果。我可能只是不理解那些漂浮在外面的部分,并且该multiprocessing模块的 Python 文档相当大,对我来说不清楚。

假设您有以下 for 循环:

import timeit


numbers = []

start = timeit.default_timer()

for num in range(100000000):
    numbers.append(num)

end = timeit.default_timer()

print('TIME: {} seconds'.format(end - start))
print('SUM:', sum(numbers))
Run Code Online (Sandbox Code Playgroud)

输出:

TIME: 23.965870224497916 seconds
SUM: 4999999950000000
Run Code Online (Sandbox Code Playgroud)

对于此示例,假设您有一个 4 核处理器。有没有办法总共创建 4 个进程,其中每个进程都在单独的 CPU 核心上运行,并且完成速度大约快 4 倍,因此 24 秒/4 个进程 = 约 6 秒?

以某种方式将 for 循环分成 4 个相等的块,然后将这 4 个块添加到数字列表中以等于相同的总和?有一个 stackoverflow 线程:Parallel Simple For Loop但我不明白。谢谢大家。

python parallel-processing range multiprocessing python-3.x

5
推荐指数
1
解决办法
2468
查看次数

Python 请求模块:分块发布非常大的文件以监控进度

我在 Windows 10 上使用 Python 3.8 使用该requests模块。正如标题所示,我正在将非常大的文件发布到 HTTP 服务器,并且我想提供上传的状态。

我已经阅读了 10-20 个关于这个主题的 Stack Overflow 帖子,阅读了互联网上散布的文章,并深入研究了 GitHub 上我现在甚至不记得的项目的源代码。我试图实现我读到的所有内容,但无济于事。关于这个主题的很多信息已经有很多年了,并且该requests模块自那以后已经得到了很大的改进 - 因此一些信息可能已经过时。

我遇到的问题是使用 发送文件块requests.Response.post('Some-URL', data=file_chunk, header=header)。如果上传了 5 个文件块,则服务器上有 5 个单独的文件,而不是 1 个组合文件。

为了提供文件上传的状态,我创建了一个类似于下面所示示例的生成器函数。

def read_in_chunks(file_object, chunk_size=1024):
    """Generator to read a file piece by piece.
    Default chunk size: 1k."""
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data
Run Code Online (Sandbox Code Playgroud)

然后我迭代了这样创建的生成器对象:

with open('Some-File.zip', 'rb') as file_obj:
    for file_chunk in read_in_chunks(file_obj):
        requests.Response.post('Some-URL', data=file_chunk.encode('utf-8'), header=header)
Run Code Online (Sandbox Code Playgroud)

这不起作用。在文件块上传到的服务器上,每个块作为单独的文件存储在服务器上。如果文件被分成 5 个块,那么现在就有 5 个文件。在 …

python post chunks python-3.x python-requests

5
推荐指数
0
解决办法
5648
查看次数

进程陷入 PyInstaller 可执行文件循环

Python v3.5、Windows 10

我正在使用多个进程并尝试捕获用户输入。input()搜索我看到的所有内容,在使用多个进程时会发生奇怪的事情。经过 8 个小时以上的尝试,我实施的任何措施都不起作用,我确信我做错了,但我一生都无法弄清楚。

以下是演示该问题的非常精简的程序。现在,当我在 PyCharm 中运行该程序时,它可以正常工作,但是当我用来pyinstaller创建单个可执行文件时,它会失败。该程序不断陷入循环,要求用户输入如下所示的内容:在此输入图像描述

我非常确定这与 Windows 如何从我读过的内容中获取标准输入有关。我还尝试将用户输入变量作为Queue()项目传递给函数,但存在同样的问题。我读到你应该放入input()主要的 python 进程,所以我在下面这样做了if __name__ = '__main__':

from multiprocessing import Process
import time


def func_1(duration_1):
    while duration_1 >= 0:
        time.sleep(1)
        print('Duration_1: %d %s' % (duration_1, 's'))
        duration_1 -= 1


def func_2(duration_2):
    while duration_2 >= 0:
        time.sleep(1)
        print('Duration_2: %d %s' % (duration_2, 's'))
        duration_2 -= 1


if __name__ == '__main__':

    # func_1 user input
    while True:
        duration_1 = input('Enter a positive …
Run Code Online (Sandbox Code Playgroud)

python windows parallel-processing pyinstaller python-multiprocessing

4
推荐指数
1
解决办法
3436
查看次数

Python - 使用 win32com.client 接受 Word 文档中的所有更改

我正在使用 pywin32 模块中的 win32com.client 来接受 word 文档中的所有跟踪更改(Windows 10 64 位上的 Python 3.6.4)。

具体来说,我使用的代码如下:

import win32com.client as win32


word = win32.gencache.EnsureDispatch("Word.Application")
word.Visible = False
doc = word.Documents.Open(PATH TO WORD FILE)
doc.Activate()
word.ActiveDocument.TrackRevisions = False  # Maybe not need this

try:
    word.WordBasic.AcceptAllChangesInDoc()
except TypeError:
    pass

word.ActiveDocument.Save()
doc.Close(False)
word.Application.Quit()
Run Code Online (Sandbox Code Playgroud)

我有两个问题。

1.) 有没有比使用 try-except 块更好的方法来接受所有更改?使用此方法会产生 TypeError,因此需要一个 try-except 块来完成程序。

2.) 你知道如何删除用户留下的评论吗?

python ms-word pywin32 win32com

2
推荐指数
1
解决办法
3036
查看次数

Python 3+ Tkinter中心标签文本

这是Windows OS上针对Python 3+的tkinter问题。因此,我知道如何将标签文本居中,(justify=CENTER)并且从我搜索的所有标签文本默认情况下,我都知道对齐的居中。

有人可以看下面我的代码,请告诉我我做错了什么。我已经在网上搜索了数小时的相关信息,但看不到自己做错了什么。

from tkinter import *
from tkinter.ttk import *


class MainApplication():

    def __init__(self, master):
        self.master = master
        self.master.title("OOP GUI Example")
        self.master.iconbitmap("Blank.ico")


        label = Label(self.master, text="Test Callback", )
        greet_button = Button(self.master, width=25, text="Greet", command=self.greet)
        close_button = Button(self.master, width=25, text="Close", command=self.close)

        Grid.columnconfigure(self.master, 0, weight=1)
        Grid.rowconfigure(self.master, (0,1,2), weight=1)

        label.grid(row=0, column=0, sticky="NSWE",padx=(10, 10), pady=(7.5, 0))
        greet_button.grid(row=1, column=0, sticky="NSWE", padx=(10, 10), pady=(10, 1.5))
        close_button.grid(row=2, column=0, sticky="NSWE", padx=(10, 10), pady=(1.5, 10))


    def greet(self):
        print("Greetings!")
        return


    def close(self):
        self.master.quit()
        return


root = …
Run Code Online (Sandbox Code Playgroud)

label tkinter python-3.x

1
推荐指数
1
解决办法
6913
查看次数