小编Ant*_*mba的帖子

获取Java ProgressMonitor的取消事件

我有一个ProgressMonitor pm和一个SwingWorker sw.我想取消的SwingWorker当我按cancel上-按钮pm.我想这不应该太难,我读了一些关于SwingWorker和ProgressMonitor的教程,但我无法让它工作.

final ProgressMonitor pm = new ProgressMonitor(frame, "checking", "...", 0, 100);
final SwingWorker sw = new SwingWorker()
{
    protected Object doInBackground() throws Exception 
    {
        doSomethingAndUpdateProgress();
    }
};

sw.addPropertyChangeListener(new PropertyChangeListener()
{
    public void propertyChange(PropertyChangeEvent evt)
    {
        if(evt.getPropertyName().equals("progress"))
        {
            updateProgress();
        }
        if(pm.isCanceled())
        {
            cancelAction();
        }
        if(pm.isDone())
        {
            doneAction();
        }
    }
});

sw.execute();
Run Code Online (Sandbox Code Playgroud)

进度更新工作正常,但pm.isCanceled()永远不会true.我想我需要一个用于ProgressMonitor的propertyChangeListener,但我不知道如何在那里添加一个.

java swing multithreading swingworker progressmonitor

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

尝试将*.pyc导入为模块

我有一个python脚本试图在文件系统中的某个地方导入另一个脚本(路径只在运行时知道).根据我的理解,我需要使用imp模块,这可能会起作用,但是在加载模块时,我得到的错误是找不到导入模块使用的模块.

下面是代码:

importer.py:

import imp
imp.load_compiled("my_module","full_path_to_my_module\\my_module.pyc")
Run Code Online (Sandbox Code Playgroud)

my_module.py:

import sys
import another_module
Run Code Online (Sandbox Code Playgroud)

当我运行importer.py时,我收到htis错误消息:

ImportError:没有名为another_module的模块

这里出了什么问题?我怀疑当'importer.py'正在加载'my_module.pyc'时他也试图加载'another_module'(那很好)但是看错了地方(例如不是'full_path_to_my_module')

编辑: 我尝试将'full_path_to_my_module'添加到系统路径:

import imp
import sys

sys.path.append(full_path_to_my_module)
imp.load_compiled("my_module",full_path_to_my_module+my_module)
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误

也许我做了一些不必要的事情 - 这是我的目标:我希望能够在'importer.py'中使用'my_module.pyc'的所有功能.但'my_module.pyc'的位置作为'importer.py'的参数给出.

python import compiled pyc

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

UTF8 Python BOM

可能重复:
在python中写入utf-8文件

我有Unicode字符串(带日文字符)我想写入CSV文件.但是,BOM似乎没有正确写入,就像""第一行中的字符串一样.这导致Excel无法正确显示日文字符.使用Notepad ++打开CSV时,字符会正确显示.

fileObj = codecs.open(filename,"w",'utf-8')
fileObj.write(codecs.BOM_UTF8)
c = u';'
for s in stringsToWrite:
   line = e.someUnicodeString
   fileObj.write(line)
fileObj.close()
Run Code Online (Sandbox Code Playgroud)

python unicode byte-order-mark utf-8

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