Слыхал про QSqlDatabase, но функционал у класа для меня будет маловато
con = QtSql.QSqlDatabase.addDatabase('QSQLITE')
con.setDatabaseName('data.sqlite')
con.open()
stm = QtSql.QSqlTableModel()
stm.setTable('table_name')
stm.select()
tv = QtWidgets.QTableView()
tv.setModel(stm)
global Dialog
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
from PyQt5 import QtWidgets
from modules.main_module import main_module
import sys
# ------------------------------------------------------------------------------- #
#
# ------------------------------------------------------------------------------- #
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = main_module()
window.show_window()
sys.exit(app.exec_())
from PyQt5 import QtWidgets, QtSql, QtCore, QtGui
import ui.ui_main as ui_main
from modules.win1_module import win1_module
from modules.win2_module import win2_module
# ------------------------------------------------------------------------------- #
#
# ------------------------------------------------------------------------------- #
class main_module(QtWidgets.QMainWindow):
# --------------------------------------------------------------------------- #
#
# --------------------------------------------------------------------------- #
def __init__(self, parent=None):
"""
"""
QtWidgets.QMainWindow.__init__(self, parent)
self.ui = ui_main.Ui_MainWindow()
self.ui.setupUi(self)
self.ui.btn_win1.clicked.connect(
self.on_show_win1)
self.ui.btn_win2.clicked.connect(
self.on_show_win2)
# --------------------------------------------------------------------------- #
#
# --------------------------------------------------------------------------- #
def on_show_win1(self):
"""
"""
self.win1 = win1_module(self)
self.win1.show()
# --------------------------------------------------------------------------- #
#
# --------------------------------------------------------------------------- #
def on_show_win2(self):
"""
"""
self.win2 = win2_module(self)
self.win2.show()
# --------------------------------------------------------------------------- #
# Показывыет главное окно программы
# Отображение по середине экрана
# --------------------------------------------------------------------------- #
def show_window(self):
"""
"""
desktop = QtWidgets.QApplication.desktop()
x = (desktop.width() - self.width()) // 2
y = (desktop.height() - self.height()) // 2
self.move(x, y)
self.show()
from PyQt5 import QtWidgets, QtCore, QtSql, QtGui
import ui.ui_win1 as ui_win1
# ------------------------------------------------------------------------------- #
#
#
# ------------------------------------------------------------------------------- #
class win1_module(QtWidgets.QDialog):
# --------------------------------------------------------------------------- #
#
# --------------------------------------------------------------------------- #
def __init__(self, parent=None):
"""
"""
super().__init__(parent=parent)
self.setWindowModality(QtCore.Qt.WindowModal)
self.setWindowFlags(self.windowFlags() |
QtCore.Qt.WindowMaximizeButtonHint)
self.ui = ui_win1.Ui_Dialog()
self.ui.setupUi(self)
self.main = parent
self.setWindowTitle("Окно №1")
self.ui.btn_close.clicked.connect(
self.on_close)
# --------------------------------------------------------------------------- #
#
# --------------------------------------------------------------------------- #
def on_close(self):
"""
"""
self.close()
from PyQt5 import QtWidgets, QtCore, QtSql, QtGui
import ui.ui_win2 as ui_win2
# ------------------------------------------------------------------------------- #
#
#
# ------------------------------------------------------------------------------- #
class win2_module(QtWidgets.QDialog):
# --------------------------------------------------------------------------- #
#
# --------------------------------------------------------------------------- #
def __init__(self, parent=None):
"""
"""
super().__init__(parent=parent)
self.setWindowModality(QtCore.Qt.WindowModal)
self.setWindowFlags(self.windowFlags() |
QtCore.Qt.WindowMaximizeButtonHint)
self.ui = ui_win2.Ui_Dialog()
self.ui.setupUi(self)
self.main = parent
self.setWindowTitle("Окно №2")
self.ui.btn_close.clicked.connect(
self.on_close)
# --------------------------------------------------------------------------- #
#
# --------------------------------------------------------------------------- #
def on_close(self):
"""
"""
self.close()
from PyQt5 import QtCore, QtWidgets
import ui.ui_main as ui_main
import sys
class main_module(QtWidgets.QMainWindow):
def __init__(self, parent=None):
"""
"""
QtWidgets.QMainWindow.__init__(self, parent)
self.ui = ui_main.Ui_MainWindow()
self.ui.setupUi(self)
self.ui.btn.clicked.connect(self.on_click)
def on_click(self):
"""
"""
pass
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = main_module()
window.show()
sys.exit(app.exec_())
file = QFile(":/ui/coordWidget.ui")
я чето не понимаюfrom PyQt5 import QtWidgets, uic
import sys
app = QtWidgets.QApplication(sys.argv)
window = uic.loadUi("MyForm.ui")
window.show()
sys.exit(app.exec_())
pyuic5 MyForm.ui -o ui_MyForm.py
from PyQt5 import QtWidgets
import sys, ui_MyForm
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
ui = ui_MyForm.Ui_MyForm()
ui.setupUi(window)
window.show()
sys.exit(app.exec_())
self.sqlite_con.open()
self.sqlite_con.transaction()
query = QtSql.QSqlQuery()
for param in self.params:
sql = ("UPDATE ...")
query.exec(sql)
self.sqlite_con.commit()
self.sqlite_con.close()
addBindValue
и execBatch
особого профита не даст... Разве что тормоза перейдет в конец выполнения программы terminate
но следует понимать что данный вариант не снимает блокировки если таковые были и если есть работа в БД то может произойти что-нибудь непредвиденное wait
а использовать сигналы с дополнительной проверкой finished
и возвращать id
потока в управляющий код с последующим удалением потока из, например, словаря.self.threads["thread_{}".format(i)] = thread
finished
thread.on_finished.connect(self.on_finished)
finished
self.finished.connect(self.on_finished)
self.on_finished.emit(self.thread_id)
finished
в управляющем коде удаляем поток из словаря self.threads
self.threads.pop("thread_{}".format(thread_id))
wait()
а как-то так while self.threads:
QtWidgets.qApp.processEvents()
self
и self.form
ссылаются на разные объекты и соответственно не видят друг друга self - <class '__main__.childForm'>
self.form - <class 'PyQt5.QtWidgets.QWidget'>
from PyQt5 import QtCore, QtWidgets
import sys
class child_form(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.setWindowFlags(QtCore.Qt.Window)
self.setWindowModality(QtCore.Qt.WindowModal)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
self.setWindowTitle("Дочернее окно")
self.resize(300, 70)
btn_close = QtWidgets.QPushButton("&Закрыть дочернее окно")
btn_close.clicked.connect(self.on_btn_close)
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(btn_close)
self.setLayout(vbox)
def show_window(self):
self.show()
def on_btn_close(self):
self.close()
class main_form(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.setWindowTitle("Первая программа на PyQt")
self.resize(500, 500)
label = QtWidgets.QLabel("<center>Привет, мир!</center>")
btn_modal = QtWidgets.QPushButton("Открыть &дочернее окно")
btn_close = QtWidgets.QPushButton("&Закрыть программу")
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(label)
vbox.addWidget(btn_modal)
vbox.addWidget(btn_close)
self.setLayout(vbox)
btn_modal.clicked.connect(self.on_btn_modal)
btn_close.clicked.connect(QtWidgets.qApp.quit)
def show_window(self):
self.show()
def on_btn_modal(self):
child = child_form(self)
child.show_window()
def main():
app = QtWidgets.QApplication(sys.argv)
form = main_form()
form.show_window()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
if self.radio_button_3.isChecked():
self.bth_vis.clicked.connect(self.function2)
else:
self.bth_vis.clicked.connect(self.function1)
self.bth_vis.clicked.connect(self.make_choice)
.
.
.
def make_choice(sefl):
if self.radio_button_3.isChecked():
self.func_1()
else:
self.func_2()
radiobutton.setChecked(False)
rb_1.func = "func_1"
rb_1.toggled.connect(self.on_rb_select)
rb = self.sender()
if rb.isChecked():
self.rb_selected = rb.func
def on_btn_click(self):
if self.rb_selected == "func_1":
self.func_1()
if self.rb_selected == "func_2":
self.func_2()
from PyQt5.QtWidgets import *
import sys
class main_window(QWidget):
def __init__(self):
QWidget.__init__(self)
self.rb_selected = 1
layout = QVBoxLayout()
self.setLayout(layout)
self.label = QLabel()
layout.addWidget(self.label)
gb_layout = QHBoxLayout()
gb_widget = QWidget()
gb_widget.setLayout(gb_layout)
gb = QButtonGroup(gb_widget)
rb_1 = QRadioButton()
rb_1.setChecked(True)
rb_1.func = "func_1"
rb_1.toggled.connect(self.on_rb_select)
gb.addButton(rb_1)
gb_layout.addWidget(rb_1)
rb_2 = QRadioButton()
rb_2.setChecked(False)
rb_2.func = "func_2"
rb_2.toggled.connect(self.on_rb_select)
gb.addButton(rb_2)
gb_layout.addWidget(rb_2)
layout.addWidget(gb_widget)
self.btn = QPushButton("Press me")
self.btn.clicked.connect(self.on_btn_click)
layout.addWidget(self.btn)
def on_btn_click(self):
if self.rb_selected == "func_1":
self.func_1()
if self.rb_selected == "func_2":
self.func_2()
def on_rb_select(self):
rb = self.sender()
if rb.isChecked():
self.rb_selected = rb.func
def func_1(self):
self.label.setText("func_1")
def func_2(self):
self.label.setText("func_2")
if __name__ == "__main__":
app = QApplication(sys.argv)
screen = main_window()
screen.show()
sys.exit(app.exec_())
from PyQt5.QtWidgets import *
import sys
class Window(QWidget):
def __init__(self):
QWidget.__init__(self)
layout = QVBoxLayout()
self.setLayout(layout)
self.label = QLabel("Сумма = 0")
layout.addWidget(self.label)
self.sum = 0
self.gb_list = {}
for i in range(1, 10):
gb_layout = QHBoxLayout()
gb_widget = QWidget()
gb_widget.setLayout(gb_layout)
gb = QButtonGroup(gb_widget)
for j in range(1, 10):
radiobutton = QRadioButton()
radiobutton.setChecked(False)
radiobutton.number = "{}".format(i)
radiobutton.value = "{}".format(j)
radiobutton.toggled.connect(self.onClicked)
gb.addButton(radiobutton)
gb_layout.addWidget(radiobutton)
layout.addWidget(gb_widget)
def onClicked(self):
radioButton = self.sender()
if radioButton.isChecked():
self.gb_list[radioButton.number] = int(radioButton.value)
self.label.setText("Сумма = {}".format(sum(self.gb_list.values())))
app = QApplication(sys.argv)
screen = Window()
screen.show()
sys.exit(app.exec_())