SHARE
TWEET

Untitled

a guest Oct 15th, 2019 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import sqlite3
  2. import sys
  3.  
  4. from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidgetItem
  5. from PyQt5 import QtCore, QtGui, QtWidgets
  6.  
  7.  
  8. class Ui_Form(object):
  9.     def setupUi(self, MainWindow):
  10.         MainWindow.setObjectName("MainWindow")
  11.         MainWindow.resize(800, 600)
  12.         font = QtGui.QFont()
  13.         font.setPointSize(10)
  14.         MainWindow.setFont(font)
  15.         self.centralwidget = QtWidgets.QWidget(MainWindow)
  16.         self.centralwidget.setObjectName("centralwidget")
  17.         self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
  18.         self.tableWidget.setGeometry(QtCore.QRect(10, 110, 771, 441))
  19.         self.tableWidget.setObjectName("tableWidget")
  20.         self.tableWidget.setColumnCount(0)
  21.         self.tableWidget.setRowCount(0)
  22.         self.spinBox = QtWidgets.QSpinBox(self.centralwidget)
  23.         self.spinBox.setGeometry(QtCore.QRect(40, 10, 731, 22))
  24.         font = QtGui.QFont()
  25.         font.setPointSize(12)
  26.         self.spinBox.setFont(font)
  27.         self.spinBox.setMinimum(1)
  28.         self.spinBox.setMaximum(1000)
  29.         self.spinBox.setObjectName("spinBox")
  30.         self.label = QtWidgets.QLabel(self.centralwidget)
  31.         self.label.setGeometry(QtCore.QRect(10, 10, 21, 21))
  32.         font = QtGui.QFont()
  33.         font.setPointSize(12)
  34.         self.label.setFont(font)
  35.         self.label.setObjectName("label")
  36.         self.pushButton = QtWidgets.QPushButton(self.centralwidget)
  37.         self.pushButton.setGeometry(QtCore.QRect(40, 40, 721, 23))
  38.         font = QtGui.QFont()
  39.         font.setPointSize(11)
  40.         self.pushButton.setFont(font)
  41.         self.pushButton.setObjectName("pushButton")
  42.         self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
  43.         self.pushButton_2.setGeometry(QtCore.QRect(40, 70, 721, 23))
  44.         font = QtGui.QFont()
  45.         font.setPointSize(11)
  46.         self.pushButton_2.setFont(font)
  47.         self.pushButton_2.setObjectName("pushButton_2")
  48.         MainWindow.setCentralWidget(self.centralwidget)
  49.         self.menubar = QtWidgets.QMenuBar(MainWindow)
  50.         self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
  51.         self.menubar.setObjectName("menubar")
  52.         MainWindow.setMenuBar(self.menubar)
  53.         self.statusbar = QtWidgets.QStatusBar(MainWindow)
  54.         self.statusbar.setObjectName("statusbar")
  55.         MainWindow.setStatusBar(self.statusbar)
  56.  
  57.         self.retranslateUi(MainWindow)
  58.         QtCore.QMetaObject.connectSlotsByName(MainWindow)
  59.  
  60.     def retranslateUi(self, MainWindow):
  61.         _translate = QtCore.QCoreApplication.translate
  62.         MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  63.         self.label.setText(_translate("MainWindow", "ID:"))
  64.         self.pushButton.setText(_translate("MainWindow", "Загрузить"))
  65.         self.pushButton_2.setText(_translate("MainWindow", "Сохранить"))
  66.  
  67.  
  68. class MyWidget(QMainWindow, Ui_Form):
  69.     def __init__(self):
  70.         super().__init__()
  71.         self.setupUi(self)
  72.         self.con = sqlite3.connect("films.db")
  73.         self.pushButton.clicked.connect(self.update_result)
  74.         self.tableWidget.itemChanged.connect(self.item_changed)
  75.         self.pushButton_2.clicked.connect(self.save_results)
  76.         self.modified = {}
  77.         self.titles = None
  78.  
  79.     def update_result(self):
  80.         cur = self.con.cursor()
  81.         # Получили результат запроса, который ввели в текстовое поле
  82.         result = cur.execute("Select * from films WHERE id=?",
  83.                              (self.spinBox.text(),)).fetchall()
  84.         # Заполнили размеры таблицы
  85.         self.tableWidget.setRowCount(len(result))
  86.         self.tableWidget.setColumnCount(len(result[0]))
  87.         self.titles = [description[0] for description in cur.description]
  88.         # Заполнили таблицу полученными элементами
  89.         for i, elem in enumerate(result):
  90.             for j, val in enumerate(elem):
  91.                 self.tableWidget.setItem(i, j, QTableWidgetItem(str(val)))
  92.         self.modified = {}
  93.  
  94.     def item_changed(self, item):
  95.         # Если значение в ячейке было изменено,
  96.         # то в словарь записывается пара: название поля, новое значение
  97.         self.modified[self.titles[item.column()]] = item.text()
  98.  
  99.     def save_results(self):
  100.         if self.modified:
  101.             cur = self.con.cursor()
  102.             que = "UPDATE films SET\n"
  103.             for key in self.modified.keys():
  104.                 que += "{}='{}'\n".format(key, self.modified.get(key))
  105.             que += "WHERE id = ?"
  106.             cur.execute(que, (self.spinBox.text(),))
  107.             self.con.commit()
  108.  
  109.  
  110. app = QApplication(sys.argv)
  111. ex = MyWidget()
  112. ex.show()
  113. sys.exit(app.exec_())
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top