我有一个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,但我不知道如何在那里添加一个.
我有一个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中写入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)