问题描述
# 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_())
标签: python-3.xdatabasesqlite