我一直在尝试创建一个tkinter顶级窗口,用于流式传输视频格式网络摄像头并进行QR扫描.我从SO获得了这个QR扫描代码,而另一个代码只是从网络摄像头更新图像而不是在tkinter标签上流式传输视频.
我试图将这两者结合起来,以便使用标签更新来自网络摄像头的图像的顶层窗口和关闭顶层窗口的关闭按钮.当它流式传输图像时,它可以扫描QR码,如果扫描成功,网络摄像头和顶层窗口将关闭.
这是我试过的.
import cv2
import cv2.cv as cv
import numpy
import zbar
import time
import threading
import Tkinter
from PIL import Image, ImageTk
class BarCodeScanner(threading.Thread, Tkinter.Toplevel):
def __init__(self):
# i made this as a global variable so i can access this image
# outside ie,. beyond the thread to update the image on to the tkinter window
global imgtk
imgtk = None
threading.Thread.__init__(self)
self.WINDOW_NAME = 'Camera'
self.CV_SYSTEM_CACHE_CNT = 5 # Cv has 5-frame cache
self.LOOP_INTERVAL_TIME …Run Code Online (Sandbox Code Playgroud) 我在 Ubuntu 14.04(64 位)上使用 python 编写了一个小型 GUI 桌面应用程序。我想要我的代码的可执行版本,以便它可以在其他 linux 机器上运行。我能够为 Windows 和 Mac 创建可执行文件。但是在 Linux 上创建的二进制文件不起作用。
对于 Windows:我用来使代码可执行的命令是
pyinstaller -D -F -n main -w "main.py"
Run Code Online (Sandbox Code Playgroud)
这在其他 Windows(64 位)机器上也能正常工作。
对于 Mac:
pyinstaller --windowed "main.py"
Run Code Online (Sandbox Code Playgroud)
工作得很好。
对于 linux:我试过了
pyinstaller main.py
Run Code Online (Sandbox Code Playgroud)
也
pyinstaller -D -F -n main -w "main.py"
Run Code Online (Sandbox Code Playgroud)
我无法打开二进制文件

我尝试使用更改权限chmod,仍然是相同的错误。
我在用:
我知道这个问题在SO和其他地方安静之前已经被问过了.我仍然无法完成它.如果我的英语不好,我很抱歉
在linux中删除文件要简单得多.刚刚os.remove(my_file)完成了这项工作,但在windows中它给出了
os.remove(my_file)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: (file-name)
Run Code Online (Sandbox Code Playgroud)
我的代码:
line_count = open(my_file, mode='r') #
t_lines = len(line_count.readlines()) # For total no of lines
outfile = open(dec_file, mode='w')
with open(my_file, mode='r') as contents:
p_line = 1
line_infile = contents.readline()[4:]
while line_infile:
dec_of_line = baseconvert(line_infile.rstrip(),base16,base10)
if p_line == t_lines:
dec_of_line += str(len(line_infile)).zfill(2)
outfile.write(dec_of_line + "\r\n")
else:
outfile.write(dec_of_line + "\r\n")
p_line += 1
line_infile = contents.readline()[4:]
outfile.close()
os.remove(my_file) …Run Code Online (Sandbox Code Playgroud) 假设我有一个list或tuple包含数字的类型long long,
x = [12974658, 638364, 53637, 63738363]
Run Code Online (Sandbox Code Playgroud)
如果想struct.pack单独使用它们,我必须使用
struct.pack('<Q', 12974658)
Run Code Online (Sandbox Code Playgroud)
或者如果我想做多个,那么我必须像这样明确地提到它
struct.pack('<4Q', 12974658, 638364, 53637, 63738363)
Run Code Online (Sandbox Code Playgroud)
但是,我如何在声明中list或tuple内部插入项目struct.pack.我尝试使用这样的for循环.
struct.pack('<4Q', ','.join(i for i in x))
Run Code Online (Sandbox Code Playgroud)
得到错误说expected string, int found,所以我将包含类型的列表转换int为str,现在包装它们变得复杂得多.因为整个列表被转换为字符串(就像一个句子).
截至目前我正在做一些事情
binary_data = ''
x = [12974658, 638364, 53637, 63738363]
for i in x:
binary_data += struct.pack('<Q', i)
Run Code Online (Sandbox Code Playgroud)
我打开包装就像
struct.unpack('<4Q', binary_data)
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有更好的方法,比如我可以直接指出list或tuple在struct.pack声明中,或者可能是一个班轮?
我应该为Windows,Mac和Linux创建一个可执行文件。但是,我暂时没有Windows计算机,也根本没有Mac。我有一台Linux机器,但是我不想更改分区,甚至不想用Windows创建双重引导。
我已经使用python创建了一个应用程序,并且正在使用pyinstaller来创建我的可执行文件。如果我使用Docker(在Linux上安装Windows和Mac的映像),是否可以为Windows和Mac创建具有所有依赖项的可执行文件(如.dllWindows的所有依赖文件以及Mac的任何类似文件)?
python ×4
pyinstaller ×2
tkinter ×2
windows ×2
docker ×1
linux ×1
list ×1
macos ×1
opencv ×1
python-2.7 ×1
struct ×1
ubuntu-14.04 ×1
webcam ×1