Python 3.x 每当我将此python脚本更改为可执行文件时,我的数据库文件都不会连接到此应用程序 #pylint:禁用所有 导入系统 从PySide2.QtWidgets导入( QMainWindow, QApplication, QPushButton, QLabel

Python 3.x 每当我将此python脚本更改为可执行文件时,我的数据库文件都不会连接到此应用程序 #pylint:禁用所有 导入系统 从PySide2.QtWidgets导入( QMainWindow, QApplication, QPushButton, QLabel,python-3.x,database,sqlite,Python 3.x,Database,Sqlite,每当我将此python脚本更改为可执行文件时,我的数据库文件都不会连接到此应用程序 #pylint:禁用所有 导入系统 从PySide2.QtWidgets导入( QMainWindow, QApplication, QPushButton, QLabel, QLineEdit, QVBoxLayout, QTableWidget, QTableWidgetItem, QHeaderView, QGridLayout, QHBoxLayout, QMenuBar, 行动, QDialog, Qa

每当我将此python脚本更改为可执行文件时,我的数据库文件都不会连接到此应用程序
#pylint:禁用所有
导入系统
从PySide2.QtWidgets导入(
QMainWindow,
QApplication,
QPushButton,
QLabel,
QLineEdit,
QVBoxLayout,
QTableWidget,
QTableWidgetItem,
QHeaderView,
QGridLayout,
QHBoxLayout,
QMenuBar,
行动,
QDialog,
QabstratemView,
QMenu,
)
从PySide2.QtCore导入Qt、QRect、QCoreApplication
导入sqlite3
类窗口(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
conn=sqlite3.connect(“database.db”)
self.c=conn.cursor()
self.setWindowTitle(“店铺”)
#调用设置程序
self.initGui()
def initGui(self):
self.dialog=QDialog()
self.dialog.setModal(True)
self.setCentralWidget(self.dialog)
self.dialog.setFixedWidth(500)
self.vbox=QGridLayout(self.dialog)
label=QLabel()
label.setText(“按项目ID搜索:”)
self.vbox.addWidget(标签,0,0)
self.ledit=QLineEdit()
self.vbox.addWidget(self.ledit,0,1,1,3)
标签=[(“商品编号:”,3,0),(“商品编号:”,4,0),(“品牌:”,5,0),(“说明:”,6,0),(“公司:”,7,0),(“公司代码:”,8,0)]
self.labels=[]
对于l in标签:
label=QLabel()
label.setText(l[0])
label.setAlignment(Qt.AlignRight)
self.vbox.addWidget(标签,l[1],l[2])
temp=QLabel()
温度设置校准(Qt.校准中心)
self.vbox.addWidget(temp,l[1],l[2]+1,1,3)
self.labels.append(临时)
label=QLabel()
label.setText(“数量:”)
label.setAlignment(Qt.AlignCenter)
self.vbox.addWidget(标签,2,2)
self.ledit2=QLineEdit()
self.ledit2.设置固定宽度(150)
self.vbox.addWidget(self.ledit2,2,3)
BTN=[(“搜索”,lambda:self.Search(),1,0,1,4),(“保存”,lambda:self.Save(),2,0,1,2)]
对于btn中的btn:
button=QPushButton()
button.setText(btn[0])
按钮。单击。连接(btn[1])
self.vbox.addWidget(按钮,btn[2],btn[3],btn[4],btn[5])
def保存(自我):
尝试:
如果不是self.ledit2.text()或不是isinstance(int(self.ledit2.text()),int):
返回self.ledit2.setText(“数量!”)
对于范围内的i(len(self.labels)):
如果self.labels[i].text()=“i”或self.labels[i].text()=“n/a”:
返回
其他:
打开(“保存的.csv”、“a”)作为文件:
file.write(self.labels[i].text()+“,”)
打开(“保存的.csv”、“a”)作为文件:
file.write(self.ledit2.text()+“\n”)

self.ledit2.setText(self.ledit2.text()+)请修复code@CoolCloud您现在可以检查我的代码正在运行,但数据没有传输吗?您可以告诉我ISSUERY
rows=csv.reader(文件,分隔符=',')会给我带来什么吗
然后循环行?如果不知道数据在csv文件中,sql语句必须将每个值分开,这很难说。@CoolCloud'/System/Library/Frameworks/Tk.framework/Tk':'Tk'-add binary='/System/Library/Frameworks/Tcl.framework/Tcl':'Tcl'你的脚本.py我已经创建了一个数据库应用程序,但每次更改我都会数据没有显示。当我将python scrip更改为可执行文件时,您能告诉我如何包含.db文件吗file@CoolCloud他们禁止我问新问题,这就是为什么我要修改旧问题来问你答案
# pylint: disable-all
import sys
from PySide2.QtWidgets import (
    QMainWindow,
    QApplication,
    QPushButton,
    QLabel,
    QLineEdit,
    QVBoxLayout,
    QTableWidget,
    QTableWidgetItem,
    QHeaderView,
    QGridLayout,
    QHBoxLayout,
    QMenuBar,
    QAction,
    QDialog,
    QAbstractItemView,
    QMenu,
)
from PySide2.QtCore import Qt, QRect, QCoreApplication
import sqlite3


class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        conn = sqlite3.connect("database.db")
        self.c = conn.cursor()

        self.setWindowTitle("Shop")

        # Call the setup

        self.initGui()

    def initGui(self):
        self.dialog = QDialog()
        self.dialog.setModal(True)
        self.setCentralWidget(self.dialog)
        self.dialog.setFixedWidth(500)
        self.vbox = QGridLayout(self.dialog)

        label = QLabel()
        label.setText("Search by Item ID :")
        self.vbox.addWidget(label, 0, 0)
        self.ledit = QLineEdit()
        self.vbox.addWidget(self.ledit, 0, 1, 1, 3)

        LABELS = [("Item ID :", 3, 0), ("Article No. :", 4, 0), ("Brand :", 5, 0), ("Description : ", 6, 0), ("Company :", 7, 0), ("Company Code :", 8, 0)]
        self.labels = []
        for l in LABELS:
            label = QLabel()
            label.setText(l[0])
            label.setAlignment(Qt.AlignRight)
            self.vbox.addWidget(label, l[1], l[2])
            temp = QLabel()
            temp.setAlignment(Qt.AlignCenter)
            self.vbox.addWidget(temp, l[1], l[2] + 1, 1, 3)
            self.labels.append(temp)

        label = QLabel()
        label.setText("Quantity :")
        label.setAlignment(Qt.AlignCenter)
        self.vbox.addWidget(label, 2, 2)

        self.ledit2 = QLineEdit()
        self.ledit2.setFixedWidth(150)
        self.vbox.addWidget(self.ledit2, 2, 3)

        BTNS = [("Search", lambda: self.search(), 1, 0, 1, 4), ("Save", lambda: self.save(), 2, 0, 1, 2)]
        for btn in BTNS:
            button = QPushButton()
            button.setText(btn[0])
            button.clicked.connect(btn[1])
            self.vbox.addWidget(button, btn[2], btn[3], btn[4], btn[5])

    def save(self):
        try:
            if not self.ledit2.text() or not isinstance(int(self.ledit2.text()), int):
                return self.ledit2.setText("Quantity!")
            for i in range(len(self.labels)):
                if self.labels[i].text() == "" or self.labels[i].text() == "n/a":
                    return
                else:
                    with open("saved.csv", "a") as file:
                        file.write(self.labels[i].text() + ",")
            with open("saved.csv", "a") as file:
                file.write(self.ledit2.text() + "\n")
            self.ledit2.setText(self.ledit2.text() + " <<-- Saved")
        except ValueError:
            self.ledit2.setText("Quantity!")
        finally:
            lines = open("saved.csv", "r").readlines()
            lines_set = set(lines)
            out = open("saved.csv", "w")
            for line in lines_set:
                out.write(line)

    def search(self):
        try:
            results = self.c.execute("SELECT * FROM items WHERE id=:id", {"id": self.ledit.text()})
            r = results.fetchone()
            for i in range(len(r)):
                self.labels[i].setText(str(r[i]))
        except TypeError:
            for i in range(len(self.labels)):
                self.labels[i].setText("n/a")


if __name__ == "__main__":
    app = QApplication(sys.argv)

    win = Window()
    win.show()
    # win.showMaximized()

    sys.exit(app.exec_())