小编Bro*_* S.的帖子

CSV模块的编写者不会让我写二进制文件

我试图在打开文件时使用'w'标签,但它会使行间隔两倍,导致读取无效.所以我发现更改为'wb'将是正确的格式.现在我正在使用'wb'标志,我无法使csv.writer.writerow()工作.我已经编码了所有的字符串,并且因为我一直收到这个错误而丢失了.我看到的所有问题都说b'string在这里'或myString.encode('ascii')解决了我得到的错误,但它并没有为我解决.这是我有的:

    dataWriter = csv.writer(open(fileName, 'wb'))
    for i in range(self.ui.table.rowCount()):
        rowData = [self.ui.table.item(i,0).text().encode('utf-8')\
        ,self.ui.table.item(i,1).text().encode('utf-8')\
        ,self.ui.table.item(i,2).text().encode('utf-8')\
        ,self.ui.table.item(i,3).text().encode('utf-8')\
        ,self.ui.table.item(i,4).text().encode('utf-8')]
        dataWriter.writerow(rowData)
Run Code Online (Sandbox Code Playgroud)

我认为这将工作,但它仍然给我以下错误:"TypeError:必须是字节或缓冲区,而不是str"在行"dataWriter.writerow(rowData)".

任何帮助都会被贬低.谢谢.

python csv python-3.x

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

在另一台计算机上运行冻结的pyqt应用程序时未显示的图像

我有一个PyQt4程序,我用cx_freeze冻结了.我遇到的问题是,当我创建一个QGraphicsPixmapItem,它正在获取它的'像素图由SVG文件制作时,Item没有问题,但是Pixmap没有加载所以没有图像只是场景中的项目.令我困惑的是,只有当我在不同于构建exe的计算机上运行它时,才会发生这种情况.当我在构建它的计算机上运行exe时,程序运行完美.即使我尝试在计算机上安装了所有必需的python组件和pyqt组件的计算机上运行它,如果它不是构建它的计算机,则不会从svg文件加载pixmap.我不确定这是否是我的cx_freeze setup.py文件的问题,或者如果我需要更改主代码中的内容,那么任何帮助或只是指向正确的方向将是伟大的.我的感觉是,当cx_freeze构建它时,某些东西会搞砸,所以我将粘贴下面的setup.py文件的内容.我也使用Python v3.1在Windows上运行.

from cx_Freeze import setup, Executable

files = ['drawings\\FULL', 'drawings\\PANEL', 'data.csv', 'panelData.csv']
binIncludes = ['C:\\Python31\\Lib\\site-packages\\PyQt4\\bin\\QtSvg4.dll']
includes = ['main', 'PunchDialog', 'ArrayDialog', 'PricingDialog', 'FontAndInputDialog', 'PanelSelector', 'PyQt4', 'os', 'sys', 'ctypes', 'csv']
packages = ['drawings']
path = ['C:\\Users\\Brock\\Documents\\Programming\\PanelDesigner\\DrawingFirst', 'C:\\Python31\\Lib', 'C:\\Python31\\Lib\\site-packages', 'C:\\Python31\\DLLs']

setup(
        name = 'PanelBuilder',
        version = '1.0',
        description = 'Allows user to draw custom panel layouts.',
        author = 'Brock Seabaugh',
        options = {'build_exe': {'packages':packages, 'path':path, 'include_files':files, 'bin_includes':binIncludes, 'includes':includes}},
        executables = [Executable('PanelBuilder.py')])
Run Code Online (Sandbox Code Playgroud)

PS.这是我的文件层次结构(如果有帮助的话):

\DrawingFirst
    Main .py file
    All .py files for all …
Run Code Online (Sandbox Code Playgroud)

pyqt pyqt4 cx-freeze python-3.x

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

dropEvent() 没有被调用

我正在尝试从 QTreeWidget 到 QGraphicsView 执行拖放操作。dragStart() 有效,并且 dragEnterEvent() 有效,但 dropEvent() 从未被调用。此外,像素图直到光标进入 QGraphicsView 才显示,这不是问题,但我只是认为它会在拖动开始后立即出现。这是我的 startDrag 函数:

def on_list_startDrag(self, supportedActions):
    #Retreive the item that was clicked on
    currentPart = self.ui.list.currentItem()
    part = currentPart.text(0)

    drag = QtGui.QDrag(self.ui.list)
    mime = QtCore.QMimeData()
    print(part)
    #retreive that associated graphics file
    icon = QtGui.QIcon('drawings/FULL/' + part + '.svg')
    pixmap = icon.pixmap(102,122)

    selected = QtGui.QImage('drawings/FULL/' + part + '.svg')
    data = pickle.dumps(selected)

    mime.setData('application/x-item', data)
    #mime.setImageData(QtGui.QImage('drawings/FULL/' + part + '.svg'))
    drag.setMimeData(mime)
    drag.setHotSpot(QtCore.QPoint(pixmap.width()/2, pixmap.height()/2))
    drag.setPixmap(pixmap)
    drag.exec_()
Run Code Online (Sandbox Code Playgroud)

这是dragEnterEvent:

def on_workArea_dragEnterEvent(self, event):
    print(event.format())
    if …
Run Code Online (Sandbox Code Playgroud)

python pyqt

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

使用cx_freeze后,QGraphicsPixmapItem不会出现

我无法理解为什么在使用cx_freeze构建应用程序后我的QGraphicsPixmapItem没有出现.该类和cx_freeze是否有任何已知问题,或者我错过了cx_freeze的一些设置?以下是创建和显示QGraphicsPixmapItem的部分,之后是我的cx_freeze的setup.py:

def partNo_changed(self):
    self.scene.removeItem(self.previewItem)
    partNumber = self.ui.partNo.text()
    fileLocation = 'drawings\\FULL\\%s.svg' % partNumber
    print(fileLocation)
    pixmap = QtGui.QPixmap(fileLocation)
    self.previewItem = QtGui.QGraphicsPixmapItem(pixmap)
    self.previewItem.setPos(0, 0)
    self.scene.addItem(self.previewItem)
    self.ui.svgPreview.centerOn(self.previewItem)
Run Code Online (Sandbox Code Playgroud)

这是setup.py脚本:

from cx_Freeze import setup, Executable

files = ['drawings\\FULL']

setup(
        name = 'DBManager',
        version = '1.0',
        description = 'Makes and maintains the .csv database files.',
        author = 'Brock Seabaugh',
        options = {'build_exe': {'include_files':files, 'bin_path_includes':files}},
        executables = [Executable('dbManager_publicDB.py')])
Run Code Online (Sandbox Code Playgroud)

其他所有东西都在程序中运行,这是唯一不起作用的东西(如果我只运行.py脚本,它会起作用,但是当我运行exe时却不行).我构建或运行exe时没有错误.如果有人可以帮助解决这个问题,那就太棒了.我正在使用Python v3.1和cx_freeze v4.2.3以及PyQt v4.

python pyqt4 cx-freeze python-3.x

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

标签 统计

python ×3

python-3.x ×3

cx-freeze ×2

pyqt ×2

pyqt4 ×2

csv ×1