我怎样才能使用PYTHONPATH?当我尝试在路径中运行脚本时,找不到该文件.当我cd到包含脚本的目录时,脚本运行.那么PYTHONPATH有什么用呢?
$ echo $PYTHONPATH
:/home/randy/lib/python
$ tree -L 1 '/home/randy/lib/python'
/home/randy/lib/python
??? gbmx_html.py
??? gbmx.py
??? __init__.py
??? __pycache__
??? scripts
??? yesno.py
$ python gbmx.py -h
python: can't open file 'gbmx.py': [Errno 2] No such file or directory
$ cd '/home/randy/lib/python'
Run Code Online (Sandbox Code Playgroud)
cd到文件目录后运行..
$ python gbmx.py -h
usage: gbmx.py [-h] [-b]
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用PYTHONPATH?
我已经尝试了一段时间来确定使用标准Java打印库来打印文件的方法 - 特别是PDF文档 - 具有某些属性 - 特别是某些托盘或使用双面打印.
关于如何做到这一点有很多文档,事实上,我已经研究并尝试了这些方法.典型的方式是这样的:
public static void main (String [] args) {
try {
PrintService[] pservices = PrintServiceLookup.lookupPrintServices(null, null);
//Acquire Printer
PrintService printer = null;
for (PrintService serv: pservices) {
System.out.println(serv.toString());
if (serv.getName().equals("PRINTER_NAME_BLAH")) {
printer = serv;
}
}
if (printer != null) {
System.out.println("Found!");
//Open File
FileInputStream fis = new FileInputStream("FILENAME_BLAH_BLAH.pdf");
//Create Doc out of file, autosense filetype
Doc pdfDoc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
//Create job for printer
DocPrintJob printJob = …Run Code Online (Sandbox Code Playgroud) 我的目的是让两首音乐曲目在性质上相似,在不同的时间彼此淡化.当发生这样的淡入淡出时,一个音乐曲目应该在短时间内从全音量淡入淡出,并且同时,另一个音轨应该从0渐变到100并且从同一时间索引继续播放.他们必须能够在任何时候动态地执行此操作 - 当某个动作发生时,淡入淡出将发生并且新音轨将开始播放在另一个音轨停止的相同位置.
无论是使用音量操作还是通过启动和停止音乐,这都可能是合理的(但是,似乎只存在"淡出"选项,而且缺少"fadein"选项).我怎样才能做到这一点?存在的最佳方法是什么?如果不可能使用Pygame,Pygame的替代品是可以接受的.
我有Java String,左右两边都有空格.我想从两边删除空白区域.
我试过的代码......
public class Test {
public static void main(String args[])
{
String abc = " Amebiasis ";
System.out.println(abc +" length "+abc.length());
System.out.println(rtrim(abc)+" length "+rtrim(abc).length());
System.out.println(ltrim(abc)+" length "+ltrim(abc).length());
String ltrim = abc.replaceAll("^\\s+","");
String rtrim = abc.replaceAll("\\s+$","");
System.out.println("ltrim"+ltrim);
System.out.println("rtrim"+rtrim);
}
public static String rtrim(String s) {
int i = s.length()-1;
while (i >= 0 && Character.isWhitespace(s.charAt(i))) {
i--;
}
return s.substring(0,i+1);
}
public static String ltrim(String s) {
int i = 0;
while (i < s.length() && Character.isWhitespace(s.charAt(i))) {
System.out.println("s.charAt(i) …Run Code Online (Sandbox Code Playgroud) 我想写一个程序向表中添加新项.这个项目有一个唯一的密钥name,它可以由100个线程中的一个创建,所以我需要确保它只插入一次.
我有两个想法:
使用 insert ignore
如果没有返回的行,则从数据库中获取它select然后insert再到表.
哪个选项更好?有更优越的想法吗?
是否有标准SWT控件类似于按钮,该按钮显示箭头并在按下时打开下拉菜单,而不是仅限工具栏的控件?
它会是这样的:

它类似于组合框控件,除了"按钮"区域的行为与实际按钮更相似 - 它的文本不会根据您的选择而改变,单击时会显示为按下,并且项目将用于操作或导航目的而不是选择.它也类似于可用于工具栏的控件,但我需要在常规复合材料上使用它.
这几乎可以通过使用常规按钮和弹出菜单控件来实现 - 但是,我不相信我可以通过这种方式在按钮上的文本旁边显示箭头.无论如何,由于这种控制似乎相当普遍,我认为有一种标准的方法可以将这两种东西用作一种.
我试图使用进度条和标签来显示谨慎的操作数量的进度.每次我更新两者时,标签立即更新,而进度条在更改之前有明显的延迟.
我有一个测试对话框,当我按下按钮时,我更新标签和进度条以反映增加1.这在代码中立即发生,没有任何循环或线程被调用(消除任何与线程相关的问题,如成为原因) - 只是简单地改变价值观.发生这种情况时,Label会立即更新,而Progress Bar会在视觉更新之前等待大约半秒钟.这导致例如,当它短暂但明显地显示填充的1/3时,它会说"2中3".

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
public class ProgressBarTest extends Shell {
private ProgressBar progressBar;
private Label lblXOfX;
private Button btnGo;
public static void main(String args[]) {
try {
Display display = Display.getDefault();
ProgressBarTest shell = new ProgressBarTest(display);
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
} catch (Exception e) …Run Code Online (Sandbox Code Playgroud) 我创建了一个对话框,用户可以在其中浏览图像,然后查看画布上绘制的图像的预览.缩放图像,以便在装入盒子时保持其纵横比.我使用了在这个答案中找到的调整大小的方法,包括将图像从SWT转换为AWT,执行调整大小,从AWT转换回SWT,最后在画布上绘制它.由于这个过程在时间和处理能力方面非常昂贵,如果图像的大小正确,我选择跳过调整大小步骤,因此不需要以任何方式进行转换.
处理具有Alpha透明度的图像时会出现此问题.在某些情况下,具有首先转换的透明度的图像将在具有黑色背景的画布上绘制.同一图像的副本已经调整为画布的确切大小,因此未转换,具有白色背景.

然而,情况并非总是如此.一些具有透明背景的图像将始终显示为白色,无论它们是否已被转换.

是什么原因导致具有透明背景的图像在SWT画布中使用一种颜色在另一种颜色上绘制? AWT转换如何影响它,如果我愿意,如何使它变得一致?
以下是转换代码,全部来自其他来源:
public static BufferedImage convertToAWT (ImageData data) {
ColorModel colorModel = null;
PaletteData palette = data.palette;
if (palette.isDirect) {
colorModel = new DirectColorModel(data.depth, palette.redMask, palette.greenMask, palette.blueMask);
BufferedImage bufferedImage = new BufferedImage(colorModel, colorModel.createCompatibleWritableRaster(data.width, data.height),
false, null);
WritableRaster raster = bufferedImage.getRaster();
int[] pixelArray = new int[3];
for (int y = 0; y < data.height; y++) {
for (int x = 0; x < data.width; x++) {
int …Run Code Online (Sandbox Code Playgroud) 如何发送自定义SWT键事件,以便在不进行任何转换的情况下输入该确切的文字字符?
我们正在制作一个自定义的屏幕图形键盘,允许多种可能的布局 - QWERTY是主要的布局,但其他几个计划,包括可视化模拟iPhone键盘布局或其他相对于PC非标准的布局.
我希望能够将我选择的任意字符作为事件发送,这样就会导致输入该确切的字符.但是,每当我发送一个具有给定字符的事件时,SWT似乎会根据系统的键盘设置和状态自动解释和转换它,将其更改为大写/小写或使用移位的符号,具体取决于移位键(按下实际键盘上的真实键盘.例如,将字符'T'传递给键事件将导致't'或'T',具体取决于shift键.它的表现类似于'4'字符,根据班次做'4'或'$'.
这是有问题的,因为我希望手动执行字符移位,并且实际上可能不希望在任何给定情况下使用与标准QWERTY键盘相同的移位字符(例如,我可能希望'$'被移位(或'功能'键)版本的'R'在较小的手机式键盘上).我怎样才能使用这些事件,以免它假设使用QWERTY键?
SWT事件中"字符"字段的文档说明如下:
键入的键所代表的字符.这是应用所有修改器后生成的最终字符.例如,当用户键入Ctrl + A时,字符值为0x01.重要的是,应用程序不会尝试基于stateMask(例如SWT.CTRL)修改字符值,否则生成的字符将不正确.
这让我相信它不应该像我一样转换我的角色,因为我命令它使用我的"最终"结果.
我已经创建了一个简单的独立示例来演示我的问题(请注意,这不是我在做实际键盘的方式,而只是为了突出显示关键事件问题):

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Button;
public class KeyboardIssueExample extends Shell {
private Text txtTextArea;
private Composite cmpButtons;
private Button btnBigA;
private Button btnBigS;
private Button btnLittleD;
private Button btnSix;
private Button btnSeven;
private Button btnDollah;
private Button btnStar;
private SelectionListener mainListener = new SelectionAdapter() {
@Override
public …Run Code Online (Sandbox Code Playgroud) 在HttpServletResponse,调用setHeader()方法与我们在html <head>标签中设置的值相同?
Java代码:
response.setHeader("Pragma", "no-cache");
response.setIntHeader("Expires", -1);
Run Code Online (Sandbox Code Playgroud)
HTML:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
它们都是一样的吗?