小编sam*_*sam的帖子

如何在tkinter窗口中设置鼠标位置

我有一个3d渲染程序,它根据鼠标在屏幕上的位置围绕观察者旋转世界.旋转世界的弧度数由此线定义

    glob.worldx=-(w.winfo_pointerxy()[0]-xy[0])/250
Run Code Online (Sandbox Code Playgroud)

其中xy [0]是屏幕中心的x坐标

这意味着观察者视野可以旋转的数量受到鼠标距离的限制.如果我能让鼠标回到屏幕中心,我可以解决这个问题.有任何想法吗?

python mouse tkinter

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

如何判断 tkinter 中的密钥是否已释放

我使用此代码来测试是否按下了某个键,但我还需要一个在释放键时调用的绑定。如果不存在这样的绑定,我会选择一些代码来连续检查该键是否仍然被按下。

w.bind("<Key>",key)
Run Code Online (Sandbox Code Playgroud)

python tkinter keypress

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

如何创建 Direct2D 工厂

我正在创建一个 Direct2D 应用程序,API 概述页面显示第一步是创建一个工厂...我尝试使用此函数

D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &factory);
Run Code Online (Sandbox Code Playgroud)

但它给出了错误

Error   62  error LNK2019: unresolved external symbol _D2D1CreateFactory@16 referenced in function "long __cdecl D2D1CreateFactory(enum D2D1_FACTORY_TYPE,struct _GUID const &,void * *)" (?D2D1CreateFactory@@YAJW4D2D1_FACTORY_TYPE@@ABU_GUID@@PAPAX@Z
Run Code Online (Sandbox Code Playgroud)

我从 WinMain 函数中调用 D2D1CreateFactory 函数。

这就是我初始化工厂指针的方式

ID2D1Factory *factory;
Run Code Online (Sandbox Code Playgroud)

这些是包含目录和库目录

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86
Run Code Online (Sandbox Code Playgroud)

我有使用 direct3D 的经验,所以我熟悉设备和渲染目标,但我的印象是对于 direct2D 工厂是第一位的,所以我没有创建任何设备、渲染目标等...

任何帮助表示赞赏。

c++ directx factory direct2d

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

使用ExcelJS和NodeJS修改xlsx文件

我的目标是读取xlsx文件,添加一行并输出.够简单吧?

这是我到目前为止的代码:

var filename1="input.xlsx";
var filename2="output.xlsx";
var Excel = require('exceljs');
var workbook = new Excel.Workbook();
workbook.xlsx.readFile(filename1);
workbook.getWorksheet("Sheet 1").addRow([1,2,3]);
workbook.xlsx.writeFile(filename2);
Run Code Online (Sandbox Code Playgroud)

我相信这应该读取来自"input.xlsx"的数据,除了已经在工作表上的数据之外还要写一行,并输出它.它不是复制文件,而是创建一个空的"output.xlsx".

我知道我做的事情很蠢,而且我对nodeJS完全不熟悉.有什么想法吗?

node.js exceljs

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

了解 OpenGL 投影矩阵

我一直在编写一个程序来使用 OpenGL 显示 3D 模型,到目前为止我一直使用正交投影,但我想切换到透视投影,以便当相机朝向模型时,它看起来会变大。我知道我必须将三个矩阵(模型、视图和投影)相乘才能正确应用所有转换。正如您在下面的代码中看到的,我尝试这样做,并且能够正确创建模型和查看矩阵。我知道这些工作正常,因为当我将模型和视图投影相乘时,我可以旋转和平移对象,以及更改相机的位置和角度。我的问题是,当我将该乘积乘以投影矩阵时,我无法再在屏幕上看到该对象。

\n\n

这里相机结构的默认值是 {0,0,-.5},但我使用键盘操纵该值来移动相机。

\n\n

我正在使用 GLFW+glad,linmath.h用于矩阵数学。

\n\n
    //The model matrix controls where the object is positioned. The\n    //identity matrix means no transformations.\n    mat4x4_identity(m);\n    //Apply model transformations here.\n\n    //The view matrix controls camera position and angle.\n    vec3 eye={camera.x,camera.y,camera.z};\n    vec3 center={camera.x,camera.y,camera.z+1};\n    vec3 up={0,1,0};\n    mat4x4_look_at(v,eye,center,up);\n\n    //The projection matrix flattens the world to 2d to be rendered on a\n    //screen.\n    mat4x4_perspective(p, 1.57, width/(float)height, 1,10); //FOV of 90\xc2\xb0\n    //mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f);\n\n    //Apply the transformations. …
Run Code Online (Sandbox Code Playgroud)

opengl glfw projection-matrix

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

这个 Common Lisp 示例中 socket-close 的目的是什么?

我从 Common Lisp Cookbook 中找到了这个例子,它展示了如何使用 usocket 启动 TCP 服务器。

该示例创建一个套接字对象并建立连接,然后写入套接字。万一出现错误,套接字写入被包裹在一个 unwind-protect 中,它将关闭套接字以便它可以被重用。我已经重写了导致错误的示例,但是当我多次运行它时,我得到一个USOCKET:ADDRESS-IN-USE-ERROR. 如果我删除socket-close函数调用,行为是相同的。

(load "~/quicklisp/setup.lisp")
(ql:quickload "usocket")

(let* ((socket (usocket:socket-listen "localhost" 8080))
       (connection (usocket:socket-accept socket)))
        (unwind-protect
          (progn
            (error "error 1"))
          (progn
            (usocket:socket-close connection)
            (usocket:socket-close socket)
            (print "Error clean up"))))
Run Code Online (Sandbox Code Playgroud)
Unhandled USOCKET:ADDRESS-IN-USE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                    {10005E85B3}>:
  Condition USOCKET:ADDRESS-IN-USE-ERROR was signalled.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005E85B3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<USOCKET:ADDRESS-IN-USE-ERROR {1003FDC063}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<USOCKET:ADDRESS-IN-USE-ERROR {1003FDC063}>)
2: (INVOKE-DEBUGGER …
Run Code Online (Sandbox Code Playgroud)

common-lisp usocket

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