小编Atl*_*435的帖子

错误:无法为 pandas 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

我正在尝试通过pip install pandas我的笔记本电脑安装 pandas。

\n

环境:

\n
    \n
  • 窗口 11 专业版
  • \n
  • Python 3.10.4
  • \n
  • 点版本22.0.4
  • \n
\n

兼容性:

\n\n

\n
C:\\Users\\PC>pip install pandas\nWARNING: Ignoring invalid distribution -ywin32 (c:\\users\\pc\\appdata\\local\\programs\\python\\python310-32\\lib\\site-packages)\nWARNING: Ignoring invalid distribution -ywin32 (c:\\users\\pc\\appdata\\local\\programs\\python\\python310-32\\lib\\site-packages)\nCollecting pandas\n  Using cached pandas-1.4.2.tar.gz (4.9 MB)\n  Installing build dependencies ... done\n  Getting requirements to build wheel ... done\n  Preparing metadata (pyproject.toml) ... done\nRequirement already satisfied: numpy>=1.21.0 in c:\\users\\pc\\appdata\\local\\programs\\python\\python310-32\\lib\\site-packages (from pandas) …
Run Code Online (Sandbox Code Playgroud)

python installation pip pandas

15
推荐指数
2
解决办法
8万
查看次数

Solo 如何防止空间泄漏?

我遇到了有关单元素元组的文档Solo,并且对它如何防止空间泄漏感到有点困惑,这让我怀疑我不了解 Haskell 内存模型和/或垃圾收集器的工作原理。

引用文档,他们说:

Solo 最重要的特征是可以强制其“外部”(通常通过模式匹配)而不强制其“内部”,因为它被定义为数据类型而不是新类型。一种有用的情况是编写函数以从数据结构中提取值时。假设您编写数组的实现并仅提供此函数来索引它们:

index :: Array a -> Int -> a
Run Code Online (Sandbox Code Playgroud)

现在想象一下有人想要从数组中提取一个值并将其存储在惰性值有限映射/字典中:

insert "hello" (arr `index` 12) m
Run Code Online (Sandbox Code Playgroud)

这实际上可能导致空间泄漏。在强制该值(现在埋在映射中)之前,实际上不会从数组中提取该值。这意味着整个数组可以仅通过该值保持活动状态!通常,解决方案是使用严格的映射,或者在存储之前强制该值,但出于某些目的,这是不可取的。

这就是我难以理解的。大概a是装箱的,因此该数组arr是一个指针数组(如果它没有装箱,a则已经被评估,并且这个参数没有实际意义)。

所以我猜测这个数组中有arr一个指向类型为 的未评估的 thunk 的指针a。然后我们将它放入映射中,因此映射现在包含一个指向类型 未计算的 thunk 的指针a。现在我不明白为什么这个数组arr此时需要保持活动状态。我们在地图中创建的任何内容都没有指向arr。该映射有自己的指针,指向 type 的未计算的 thunk a,它可以在闲暇时对其进行评估。唯一保持arr活动状态的可能是未评估的 thunk 依赖于 array arr,但如果是这种情况,我不确定将值包装在Solo数据类型中有何帮助?

我确信我错过了一些东西。我怀疑了解我所遗漏的内容会暴露我上述想法的错误之处。如果我能找出自己错在哪里,那就太好了。那么有什么想法/解释吗?

garbage-collection haskell lazy-evaluation ghc

15
推荐指数
3
解决办法
1706
查看次数

tkwait wait_variable/wait_window/wait_visibility 是否损坏?

我最近开始随意使用tkwait并注意到某些功能仅在特殊条件下才起作用。例如:

import tkinter as tk

def w(seconds):
    dummy = tk.Toplevel(root)
    dummy.title(seconds)
    dummy.after(seconds*1000, lambda x=dummy: x.destroy())
    dummy.wait_window(dummy)
    print(seconds)

root = tk.Tk()
for i in [5,2,10]:
    w(i)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

上面的代码工作得很好并且符合预期:

  1. for循环调用函数
  2. 该函数运行并阻止代码 x 秒
  3. 窗口被销毁并且 for 循环继续

但在事件驱动的环境中,这些tkwait调用会变得很棘手。该文档指出引用:

如果事件处理程序再次调用 tkwait,则对 tkwait 的嵌套调用必须在外部调用完成之前完成

>>5 >>2 >>10您将得到的不是输出>>10 >>2 >>5,因为嵌套调用会阻塞内部调用,而外部调用会阻塞内部调用。我怀疑嵌套事件循环或等效的主循环在等待时以正常方式处理事件

我使用此功能是否做错了什么?因为如果您仔细想想,几乎所有 tkinter 对话框窗口都在使用此功能,而我以前从未读过此行为。

事件驱动的示例可能是:

import tkinter as tk

def w(seconds):
    dummy = tk.Toplevel(root)
    dummy.title(seconds)
    dummy.after(seconds*1000, lambda x=dummy: x.destroy())
    dummy.wait_window(dummy)
    print(seconds)

root …
Run Code Online (Sandbox Code Playgroud)

python tkinter tcl event-driven wait

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

带有 tkinter 的嵌套类工厂

我正在尝试构建一个脚本以在我未来的项目中导入。该脚本应该在 tk.Frame 中创建一些 tk.Frames 并让我在main 中编辑创建的那些。

我认为,到达那里的最佳方法是创建一个 Holder_frame 类并放入一些嵌套类。这样我就可以使用 Holder_frame.F1在我的main 中调用它们。我尝试了很多代码,最后我在这里创建了一个帐户。无论如何,这里是我所在的地方:

import tkinter as tk
from tkinter import Frame,Button

class BaseClass(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)
        self.master = master
        self.pack()


class Holder_frame(tk.Frame):
    Names = []
    def __init__(self, master, frames=2):
        tk.Frame.__init__(self, master)
        self.master = master
        frame_names = Holder_frame.Names
        for i in range(0,frames):
            frame_names.append("F"+str(i+1))
        print(frame_names)
        Holder_frame.factory()
    def factory():
        print(Holder_frame.Names)
        print(type(BaseClass))
        for idex,i in enumerate (Holder_frame.Names):
            print(i)
            class NestedClass(BaseClass):
                pass

            NestedClass.__name__ = i
            NestedClass.__qualname__ = i

if __name__ == …
Run Code Online (Sandbox Code Playgroud)

python factory tkinter inner-classes

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

Tkinter - 几何管理

我看到并看到了很多关于 tkinter 的问题,这些问题通常不是询问代码中的错误,而是询问如何组织我的 GUI。所以我想有一个专注于这一点的答案,并帮助初学者稍微定位一下。

python layout tk-toolkit tkinter

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

overrideredirect(1) 之后的 Tkinter 自定义调整大小事件

受这个问题的启发,我想为我的根窗口编写我自己的调整大小函数。但我只是注意到我的代码显示了一些性能问题。如果你快速调整它的大小,你会看到窗口没有像我希望的那样找到它的高度提示,它“断断续续”。(这更像是一个摆动)

有人知道为什么会这样吗?我最好的猜测是tkinter事件处理程序对它来说太慢了。也许我做的数学不是最快的方法。

也许我应该说我确实update_idletasks()在不同的地方尝试过几次。我尝试过的另一种方法是使用该after方法,但它使情况变得更糟。

无论如何,这是一个示例代码:

import tkinter as tk


class FloatingWindow(tk.Tk):
    def __init__(self):
        super().__init__()
        self.overrideredirect(True)
        self.center()

        self.label = tk.Label(self, text="Grab the upper-right corner to resize")
        self.label.pack(side="top", fill="both", expand=True)

        self.grip2 = tk.Label(self,bg='blue')
        self.grip2.place(relx=1.0, rely=0, anchor="ne")
        self.grip2.bind("<B1-Motion>",self.OnMotion)

    def OnMotion(self, event):
        abs_x = self.winfo_pointerx() - self.winfo_rootx()
        abs_y = self.winfo_pointery() - self.winfo_rooty()
        if abs_x >0:
            x = self.winfo_rootx()
            y = self.winfo_rooty()+abs_y
            height = self.winfo_height()-abs_y
            if height >0:
                self.geometry("%dx%d+%d+%d" % (abs_x,height,
                                               x,y))
            
        
    def center(self):
        width = 300 …
Run Code Online (Sandbox Code Playgroud)

python tkinter

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

tkinter - 为什么会有像 bbox 这样的东西?

现在我更多地使用 tkinter Canvas,我想知道 bbox 的使用。

对我来说,我使用 bbox 来获取元素的坐标,但画布已经有一个方法来返回一个项目的坐标。那么他们为什么要发明像 bbox 这样的东西呢?

这里比较官方的 tcl 描述:

盒子

pathName bbox tagOrId ?tagOrId tagOrId ...?

返回一个包含四个元素的列表,为由 tagOrId 参数命名的所有项目提供一个近似边界框。该列表的形式为“x1 y1 x2 y2”,因此所有命名元素的绘制区域都在由左侧 x1、右侧 x2、顶部 y1 和底部 y2 限定的区域内。返回值可能会高估实际边界框几个像素。如果没有项目与任何 tagOrId 参数匹配,或者如果匹配的项目有空的边界框(即它们没有可显示的内容),则返回一个空字符串。

坐标

pathName coords tagOrId ?coordList?

查询或修改定义项目的坐标。如果未指定坐标,则此命令返回一个列表,其元素是由 tagOrId 命名的项目的坐标。如果指定了坐标,则它们将替换命名项的当前坐标。如果 tagOrId 引用多个项目,则使用显示列表中的第一个。

我看到了这些之间的区别,但无法成像,在这种情况下我需要一个 bbox 而不是坐标?有人可以教我更好地理解这一点吗?

python tkinter tkinter-canvas

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

使用 Pyinstaller 制作 exe 文件时出现问题(使用 tkinter 和 Custom tkinter 制作的文件)

我正在尝试使用 tkinter 和自定义 tkinter 制作一个用于数据输入的小型应用程序。代码在 python 中运行良好,我使用 pyinstaller --onefile --noconsole try45.py 制作了它的 exe 文件

但在运行 exe 文件时,它会给出标记为“脚本中未处理的异常”的错误。其详细信息附如下,

I have also attached the image of the error. The first two lines of it say "Failed to execute script 'try45' due to unhandled exception: [Errno 2] No such file or directory: 'C:\Users\Farzan Bashir\AppData\Local\Temp\_MEI127522\customtkinter\assets\themes\blue.json"

and the details in next lines are,

Traceback (most recent call last): File "try45.py", line 2, in File "", line 1027, in _find_and_load File "", line 1006, in _find_and_load_unlocked …

python tkinter pyinstaller customtkinter

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

Tkinter 中的双缓冲是什么意思?

我想我在互联网上看到过类似的内容:Tkinter 使用双缓冲来避免闪烁。
这意味着什么以及如何以及在哪里?

tk-toolkit tkinter

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

什么是“tk::placeWindow”以及它如何使窗口在屏幕上居中?

我试图找到一种方法使我使用 Tkinter 制作的简单计数器的窗口居中。尝试寻找除使用几何之外的另一种方法时,我遇到了:

window.eval('tk::placeWindow . center')
Run Code Online (Sandbox Code Playgroud)

但我不知道为什么会这样,而且我在文档中也找不到它。有人知道答案吗?

python tkinter

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

为什么有人会通过空函数传递字符串而不是直接在 Python 中使用该字符串?

我正在处理 tKinter GUI 的一些旧代码,他们在代码顶部创建了以下定义:

def _(text):
    return text
Run Code Online (Sandbox Code Playgroud)

然后,代码继续使用_几乎所有传递给 tKinter 小部件的字符串的函数。例如:

editmenu.add_command(label=_("Paste"), command=parent.onPaste)
Run Code Online (Sandbox Code Playgroud)

与仅传递字符串相比,是否有在这里使用该函数的原因?

我已经_从一些字符串中删除了该函数,并且没有遇到任何问题。只是好奇这是否有真正的目的。

python tkinter internationalization

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