小编sor*_*bet的帖子

使用中文字符在cx_Oracle/UnicodeDecodeError中设置查询结果编码

我正在使用包含大量中文字符数据库.我的代码是这样的:

connection = cx_Oracle.connect("%s/%s@%s:%s/%s" % (username, password, host, port, service_name))
cursor = connection.cursor()
cursor.execute('SELECT HOTEL_ID,CREATE_TIME,SOURCE,CONTENT,TITLE,RATE,UPDATE_TIME FROM T_FX_COMMENTS')

for row in cursor:
    # Stuff goes here
    pass
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Traceback (most recent call last):
  File "test.py", line 17, in <module>
    for row in cursor:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 26: illegal multibyte sequence
Run Code Online (Sandbox Code Playgroud)

这似乎GBK还不够.我想让cx-oracle我给出GB18030编码结果,而不是GBK.我该怎么做呢?

cx_Oracle.Connection.encoding是只读的...我没有在cx-oracle文档中找到任何暗示我可以做到这一点的内容.

我使用的是Python 3.3.2和cx-oracle5.1.2.我必须在这里找到一些东西.感谢帮助!

python encoding cx-oracle

7
推荐指数
2
解决办法
5019
查看次数

FXML文件中的常量

找不到任何关于此的例子.如何在FXML文件中定义常量?

例如(CONTENT_SPACING我想要创建的常量在哪里):

<VBox fx:controller="myapp.Controller" xmlns:fx="http://javafx.com/fxml" alignment="center" spacing="20">
    <fx:define>
        <Double fx:id="CONTENT_SPACING" fx:value="200"/>
    </fx:define>

    <VBox fx:id="content" spacing="$CONTENT_SPACING">
        <!-- My window contents would go here -->
    </VBox>
</VBox>
Run Code Online (Sandbox Code Playgroud)

如果可行,我的代码将在可读性方面受益.谢谢!

variables javafx constants fxml

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

为什么CMake语法到处都有多余的括号?

CMake是if这样的:

if (condition)
    ...
else if (...)
    ...
else (...)
    ...
endif (...)
Run Code Online (Sandbox Code Playgroud)

随着else if (...)(...)一个单独的条件测试.
为什么else (...)而不仅仅是else?为什么endif (...)endif呢?


Cmake的功能如下:

function(funcname ...)
    ...
endfunction(funcname ...)
Run Code Online (Sandbox Code Playgroud)

为什么endfunction(funcname ...)而不是简单endfunction


我可以省略它们出现的冗余括号的内容,如下所示:endif ().这个结构的目的是什么?

syntax language-design cmake

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

如何将C风格的数组修改为D风格的数组?

接受C风格数组作为参数的最佳方法是什么,将其修改为D风格的数组(包括更改长度),并将其作为C风格的数组返回?


在上下文中

在D中编写一个库,它编译成带有C接口的DLL(我将从C++调用我的D DLL,因此需要C接口). 它需要byte数组并修改它们的内容,有时会改变数组长度.

因为我使用的是C接口,所以我的函数必须接受C风格的数组.理想情况下,bufferMaxSize如果给定的缓冲区太小,我希望能够分配更多的内存(即扩展).

这就是我的D DLL现在接受参数的方式:

// D library code; compiles to DLL with C interface.
// bufferSize is the data length, and is a pointer because I may modify the data length.
// bufferMaxSize is the total allocated buffer size.
export extern(C) void patchData(const size_t bufferMaxSize, size_t * bufferSize, byte * buffer) { ... }
Run Code Online (Sandbox Code Playgroud)

在我的D库中,我有现有的代码,可以接受D风格的数组.沿着这条线的某个地方,必须将C风格的数组转换为D风格的数组.

我正在进行这样的转换(简化示例):

// D library code; compiles to DLL with …
Run Code Online (Sandbox Code Playgroud)

arrays memory-management d shared-memory slice

7
推荐指数
2
解决办法
129
查看次数

PySide:带有小动画和按钮的自定义QListView

我想知道如何使用自定义列表项创建QListView.我想在每个条目的左侧显示一个小的精灵动画,一些信息以及右侧的几个按钮.我还需要能够检测标题的点击次数.

我已经调查过QListView,但发现我无法用它来做这件事.一个几个 类似的问题,指出我朝QAbstractItemDelegateQAbstactListModel,但没有示例代码,我不能换我的头周围.我一直坚持超越QAbstractItemDelegatepaint()方法 - 我只是不知道如何以产生预期效果的方式覆盖它.

非常感谢您的回复!


即我想要创建这样的东西: 在此输入图像描述

qlistview pyside

6
推荐指数
0
解决办法
1687
查看次数

JavaFX:禁用Canvas对象上的图像平滑

我正在使用JavaFX制作精灵编辑器以用于桌面.

我正在尝试实现缩放功能,但我遇到了一个问题:我无法弄清楚如何禁用Canvas对象上的图像平滑.

我正在打电话,Canvas.setScaleX()Canvas.setScaleY()按照每个实施Canvas缩放的教程.但放大时我的图像看起来很模糊.

在这里有一些测试代码来演示.

我得到了什么我想要的是

由于这是一个精灵编辑器,因此使用清晰边缘对我来说非常重要.固定图像平滑的替代方法Canvas是使其具有非平滑性ImageView,并且具有隐藏Canvas以进行绘制,我宁愿避免使用.

感谢帮助.


(这里是相关问题的链接,但没有解决我的特定问题)

javafx canvas zoom image-processing

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

JavaFX:获取ScrollPane的可见区域

我想做什么:
我有一个JavaFX ScrollPane,需要确定中的可见区域ScrollPane。我了解ScrollPane.getViewPortBounds(),这使我可以获得可见区域的大小,但无法获得位置。

有什么办法可以做到吗?


在上下文中:
我正在显示一个非常大的图像,一次只需要部分显示。整个ScrollPane图像用于滚动图像,但是要确定我需要加载图像的哪些部分,我需要知道中显示的可见区域ScrollPane

java scroll javafx scrollpane bounds

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

为什么 patch.d 需要管理员权限?

我正在 Windows 8.1 上运行 DMD32 D Compiler v2.071.1(最新更新截至 2016 年 9 月 19 日)。

当我编译文件名中包含“patch”的 D 文件时,生成的可执行文件要求管理员权限。为什么?


如果我命名我的文件foo.d,一切都很好:

C:\Users\sorbet\Desktop> echo int main(string[] argv) { return 0; } > foo.d
C:\Users\sorbet\Desktop> dmd foo.d
C:\Users\sorbet\Desktop> foo.exe
C:\Users\sorbet\Desktop> echo %ERRORLEVEL%
0
Run Code Online (Sandbox Code Playgroud)

但如果我说出它的名字patch.d,我突然需要管理员权限:

C:\Users\sorbet\Desktop> echo int main(string[] argv) { return 0; } > patch.d
C:\Users\sorbet\Desktop> dmd patch.d
C:\Users\sorbet\Desktop> patch.exe
Run Code Online (Sandbox Code Playgroud)

联合应用中心

啊?


如果我将其命名为文件名中包含“补丁”的名称,例如foopatch.d. 为什么会发生这种情况,我可以禁用它吗?

d dmd elevated-privileges

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

D:创建模板化对象数组

我正在尝试创建一个Regex对象数组,如下所示:Regex[] regexes;.编译失败了main.d(46): Error: template std.regex.Regex(Char) is used as a type.

我觉得文档很神秘.我所理解的是模板在编译时生成代码,但是我没有看到什么阻止我创建数组Regex.


这里有一个存在的问题同样的问题在计算器上,但它使用C++交易,不D.

arrays templates d

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

枚举构造函数(创建成员)

在D中,我正在尝试创建一个其成员有成员的枚举.我可以更好地解释我正在尝试用一个例子做什么,在哪里si代表我正在尝试创建的子成员:


在Python中,我可以这样做:

class Foo(enum.Enum):
    A = "A string", 0
    B = "B string", 1
    C = "C string", 2

    def __init__(self, s, i):
        self.s = s
        self.i = i

print(Foo.A.s)
Run Code Online (Sandbox Code Playgroud)

Java可以做这样的事情:

public enum Foo {
    A("A string", 0),
    B("B string", 1),
    C("C string", 2);

    private final String s;
    private final int i;

    Foo(String s, int i) {
        this.s = s;
        this.i =i;
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么在D?我在官方教程中没有看到任何内容.如果由于某种原因我不能在D中做到这一点,有什么好的选择呢?

enums constructor field d member

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

如何向 `enum.StrEnum` 添加属性?

我有一个enum.StrEnum, 我想为其元素添加属性。

例如:

class Fruit(enum.StrEnum):
    APPLE = ("Apple", { "color": "red" })
    BANANA = ("Banana", { "color": "yellow" })

>>> str(Fruit.APPLE)
"Apple"

>>> Fruit.APPLE.color
"red"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?(我正在运行 Python 3.11.0。)

这个问题与这个问题不是重复的,后者询问的是原始问题enum.Enum

python enums python-3.x

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

滚动时JavaFX ScrollPane更新viewportBounds

我有一个非常大的图像,我试图在JavaFX中显示.为此,我将图像分成几个较小的图像,并且仅加载/显示在我的图像中可见的部分ScrollPane.

为了检测可见区域ScrollPane,我正在添加监听器ScrollPane.viewportBounds.但是,viewportBounds仅在我调整窗口大小时更新,但在滚动滚动条时不会更新.

如果我要滚动我的大图像,我也需要viewportBounds在滚动滚动条时更新.我该怎么做呢?


我在下面有一些测试代码.点击Button作品,但不是通过ChangeListener- leftright仍然使用保持不变ChangeListener.

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Bounds;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class TestClass extends Application {
    @Override
    public void start(Stage stage) {
        VBox vbox = new VBox();

        ScrollPane scrollPane = new ScrollPane(new Rectangle(1000, 700, Color.GREEN));
        scrollPane.setPrefSize(500, 300);

        // Using a …
Run Code Online (Sandbox Code Playgroud)

scroll javafx viewport bounds

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