QStackedWidget - Запустить функции кнопок для каждого окна из другого файла
Создан Qt проект с использованием QStackedWidget. На каждой его странице есть (или будут) кнопки, которые должны производить действия с SQLite базой. Так как функций много, я попробовала вынести их в отдельный .py-файл. Однако, я не могу понять как заставить их работать.
Если я добавляю все функции в main.py, все кнопки работают.
Попробовала создать в отдельном файле (customer_screen.py) класс с нажатием на кнопки и функциями, но получаю ошибку:
AttributeError: 'MainWindow' object has no attribute 'SoldTo_Functions'.
В идеале и команду нажатия кнопки перенести в customer_screen.py.
https://github.com/Masik84/My_Prog.git
main.py
from PyQt5.QtCore import QPropertyAnimation, QEasingCurve
from PyQt5.QtGui import QColor, QIcon
from PyQt5.QtWidgets import QMainWindow, QGraphicsDropShadowEffect, QSizeGrip
from ui_main import *
from customer_screen import SoldTo_Functions
import sys
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.ui.stackedWidget.setCurrentWidget(self.ui.home)
self.ui.btn_home.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.home))
self.ui.btn_bonuses.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.bonus_data_page))
self.ui.btn_invoices.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.widgets))
self.ui.btn_customers.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.cutomer_data_page))
# page doesn't created yet
#self.ui.btn_products.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.product_data_page))
# tried to import SoldTo_Functions
# self.ui.soldto_update_btn.clicked.connect(self.SoldTo_Functions.upload_Soldto_from_DB)
if __name__ == "__main__":
MainApp = QtWidgets.QApplication(sys.argv)
App = MainWindow()
App.show()
sys.exit(MainApp.exec_())
customer_screen.py
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow
from ui_main import Ui_MainWindow
import sqlite3
db_path = 'Bonus_db.db'
class SoldTo_Functions():
def __init__(self):
super(SoldTo_Functions, self).__init__()
# self.ui.soldto_update_btn.clicked.connect(self.upload_Soldto_from_DB)
# self.ui.soldto_add_btn.clicked.connect(self.go_to_Create_Client)
# self.ui.soldto_edit_btn.clicked.connect(self.go_to_Edit_Client)
# self.ui.soldto_delete_btn.clicked.connect(self.go_to_Delete_Client)
def upload_Soldto_from_DB(self):
conn = sqlite3.Connection(db_path)
create_customers_table = """
CREATE TABLE IF NOT EXISTS Customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
SoldTo INTEGER not null,
SoldTo_name VARCHAR (100),
CONSTRAINT Cust_Index UNIQUE (SoldTo, SoldTo_name) ON CONFLICT REPLACE);
"""
conn.execute(create_customers_table)
conn.commit()
show_customer_data = 'SELECT SoldTo, SoldTo_name FROM Customers'
result = conn.execute(show_customer_data)
self.ui.soldto_table.setRowCount(0)
for row_number, row_data in enumerate(result):
self.ui.soldto_table.insertRow(row_number)
for column_number, data in enumerate(row_data):
self.ui.soldto_table.setItem(row_number, column_number, QtWidgets.QTableWidgetItem(str(data)))
conn.close()
self.ui.soldto_error_lable.setText('Table was updated successfully')
def go_to_Create_Client(self):
print('Sold-to Create Btn clicked')
def go_to_Edit_Client(self):
print('Sold-to Edit Btn clicked')
def go_to_Delete_Client(self):
print('Sold-to Delete Btn clicked')
Ответы (3 шт):
Класс QStackedWidget предоставляет стек виджетов, в котором одновременно виден только один виджет.
Обычная практика такая, что каждый виджет, который вы добавляете в стек -
реализован в отдельном классе и этот класс вы при желании можете разместить в отдельный модуль.
Я очень грубо все что находится в модуле ui_main.py между строками:
self.stackedWidget.addWidget(self.bonus_data_page)
...
self.stackedWidget.addWidget(self.cutomer_data_page)
перенес в модуль customer_screen222.py ,
а вместо перенесенных строк добавил одну:
self.cutomer_data_page = SoldTo_Functions()
Я отметил те строки, которые также изменил. Вам надо будет немного поправить стили в модуле customer_screen222.py
Main.py
import sys
import sqlite3
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import QPropertyAnimation, QEasingCurve
from PyQt5.QtGui import QColor, QIcon
from PyQt5.QtWidgets import QMainWindow, QGraphicsDropShadowEffect, QSizeGrip
from ui_main import Ui_MainWindow # !!!
#from customer_screen import SoldTo_Functions
db_path = 'Bonus_db.db'
WINDOW_SIZE = 0;
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
# DROP SHADOW
self.shadow = QGraphicsDropShadowEffect(self)
self.shadow.setBlurRadius(17)
self.shadow.setXOffset(0)
self.shadow.setYOffset(0)
self.shadow.setColor(QColor(0, 0, 0, 150))
self.ui.bgApp.setGraphicsEffect(self.shadow)
# MINIMIZE
self.ui.minimizeAppBtn.clicked.connect(lambda: self.showMinimized())
# MAXIMIZE/RESTORE
self.ui.maximizeRestoreAppBtn.clicked.connect(lambda: self.maximize_restore())
# CLOSE APPLICATION
self.ui.closeAppBtn.clicked.connect(lambda: self.close())
# SLIDE MENU
self.ui.toggleButton.clicked.connect(lambda: self.toggleMenu())
self.ui.contentTopBg.mouseMoveEvent = self.MoveWindow
self.ui.stackedWidget.setCurrentWidget(self.ui.home)
self.ui.btn_home.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.home))
self.ui.btn_bonuses.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.bonus_data_page))
self.ui.btn_invoices.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.widgets))
self.ui.btn_customers.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.cutomer_data_page))
# page doesn't created yet
#self.ui.btn_products.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.product_data_page))
# self.ui.soldto_update_btn.clicked.connect(self.SoldTo_Functions.upload_Soldto_from_DB)
def maximize_restore(self):
# ??? global WINDOW_SIZE
status = WINDOW_SIZE
if status == 0:
WINDOW_SIZE = 1
self.showMaximized()
self.ui.appMargins.setContentsMargins(0, 0, 0, 0)
self.ui.maximizeRestoreAppBtn.setToolTip("Restore")
self.ui.maximizeRestoreAppBtn.setIcon(QIcon(u":/icons/images/icons/icon_restore.png"))
else:
WINDOW_SIZE = 0
self.showNormal()
self.resize(self.width() + 1, self.height() + 1)
self.ui.appMargins.setContentsMargins(10, 10, 10, 10)
self.ui.maximizeRestoreAppBtn.setToolTip("Maximize")
self.ui.maximizeRestoreAppBtn.setIcon(QIcon(u":/icons/images/icons/icon_maximize.png"))
def MoveWindow(self, event):
if self.isMaximized() == False:
self.move(self.pos() + event.globalPos() - self.clickPosition)
self.clickPosition = event.globalPos()
event.accept()
def mousePressEvent(self, event):
self.clickPosition = event.globalPos()
def toggleMenu(self):
width = self.ui.leftMenuBg.width()
maxExtend = 150
standard = 60
# SET MAX WIDTH
if width == 60:
widthExtended = maxExtend
else:
widthExtended = standard
# ANIMATION
self.animation = QPropertyAnimation(self.ui.leftMenuBg, b"minimumWidth")
self.animation.setDuration(500)
self.animation.setStartValue(width)
self.animation.setEndValue(widthExtended)
self.animation.setEasingCurve(QEasingCurve.InOutQuart)
self.animation.start()
if __name__ == "__main__":
MainApp = QtWidgets.QApplication(sys.argv)
App = MainWindow()
App.show()
sys.exit(MainApp.exec_())
ui_main.py
from PyQt5 import QtCore, QtGui, QtWidgets
from customer_screen222 import SoldTo_Functions # !!!
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
...
self.stackedWidget.addWidget(self.bonus_data_page)
# <---- cutomer_data_page ---->
self.cutomer_data_page = SoldTo_Functions()
# все перенес в модуль customer_screen222.py # !!!
# <---- cutomer_data_page ---->
self.stackedWidget.addWidget(self.cutomer_data_page)
self.verticalLayout_15.addWidget(self.stackedWidget)
...
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
...
item.setText(_translate("MainWindow", "Valid To"))
# !!!
# !!! self.label.setText(_translate("MainWindow", "Customer Data"))
self.cutomer_data_page.label.setText(_translate("MainWindow", "Customer Data"))
# !!! ----> ^^^^^^^^^^^^^^^^^
# !!! и так далее ...
# !!! но это нада перенести в модуль customer_screen222.py
self.cutomer_data_page.label_2.setText(_translate("MainWindow", "Sold-To Data"))
self.cutomer_data_page.soldto_update_btn.setText(_translate("MainWindow", "Update"))
self.cutomer_data_page.soldto_delete_btn.setText(_translate("MainWindow", "Delete"))
self.cutomer_data_page.soldto_edit_btn.setText(_translate("MainWindow", "Edit"))
self.cutomer_data_page.soldto_add_btn.setText(_translate("MainWindow", "Create"))
self.cutomer_data_page.soldto_table.setSortingEnabled(True)
item = self.cutomer_data_page.soldto_table.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Sold-To"))
item = self.cutomer_data_page.soldto_table.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Name (en)"))
item = self.cutomer_data_page.soldto_table.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Name (ru)"))
self.cutomer_data_page.label_3.setText(_translate("MainWindow", "Ship-To Data"))
self.cutomer_data_page.shipto_edit_btn.setText(_translate("MainWindow", "Edit"))
self.cutomer_data_page.shipto_delete_btn.setText(_translate("MainWindow", "Delete"))
self.cutomer_data_page.shipto_update_btn.setText(_translate("MainWindow", "Update"))
self.cutomer_data_page.shipto_add_btn.setText(_translate("MainWindow", "Create"))
self.cutomer_data_page.shipto_table.setSortingEnabled(True)
item = self.cutomer_data_page.shipto_table.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Ship-To"))
item = self.cutomer_data_page.shipto_table.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Name (en)"))
item = self.cutomer_data_page.shipto_table.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Name (ru)"))
self.creditsLabel.setText(_translate("MainWindow", "By: Fokina Maria"))
self.version.setText(_translate("MainWindow", "v1.0.3"))
import resources_rc
customer_screen222.py
Опубликую отдельно, потому что не помещается.
Продолжение ...
customer_screen222.py часть ПЕРВАЯ
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
import sqlite3
db_path = 'Bonus_db.db'
class SoldTo_Functions(QtWidgets.QWidget):
def __init__(self):
super(SoldTo_Functions, self).__init__()
self.cutomer_data_page = QtWidgets.QWidget(self)
self.cutomer_data_page.setStyleSheet("QPushButton {\n"
" border: 2px solid #6272a4;\n"
" border-radius: 5px; \n"
" background-color: #6272a4;\n"
" color: #f8f8f2;\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #bd93f9;\n"
" border: 2px solid #7082b6;\n"
"}\n"
"QPushButton:pressed { \n"
" background-color: #ff79c6;\n"
" border: 2px solid #ff79c6;\n"
"}")
self.cutomer_data_page.setObjectName("cutomer_data_page")
self.verticalLayout_20 = QtWidgets.QVBoxLayout(self.cutomer_data_page)
self.verticalLayout_20.setContentsMargins(9, 9, 9, 9)
self.verticalLayout_20.setSpacing(9)
self.verticalLayout_20.setObjectName("verticalLayout_20")
self.row_4 = QtWidgets.QFrame(self.cutomer_data_page)
self.row_4.setMaximumSize(QtCore.QSize(16777215, 60))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(False)
font.setItalic(False)
font.setWeight(50)
self.row_4.setFont(font)
self.row_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.row_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.row_4.setObjectName("row_4")
self.verticalLayout_14 = QtWidgets.QVBoxLayout(self.row_4)
self.verticalLayout_14.setObjectName("verticalLayout_14")
self.label = QtWidgets.QLabel(self.row_4)
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(26)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.verticalLayout_14.addWidget(self.label, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter)
self.verticalLayout_20.addWidget(self.row_4)
self.row_5 = QtWidgets.QFrame(self.cutomer_data_page)
self.row_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.row_5.setFrameShadow(QtWidgets.QFrame.Raised)
self.row_5.setObjectName("row_5")
self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.row_5)
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.soldto_frame = QtWidgets.QFrame(self.row_5)
self.soldto_frame.setStyleSheet("")
self.soldto_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.soldto_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.soldto_frame.setObjectName("soldto_frame")
self.verticalLayout_21 = QtWidgets.QVBoxLayout(self.soldto_frame)
self.verticalLayout_21.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_21.setSpacing(0)
self.verticalLayout_21.setObjectName("verticalLayout_21")
self.soldto_heade_frame = QtWidgets.QFrame(self.soldto_frame)
self.soldto_heade_frame.setMinimumSize(QtCore.QSize(0, 50))
self.soldto_heade_frame.setMaximumSize(QtCore.QSize(16777215, 50))
self.soldto_heade_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.soldto_heade_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.soldto_heade_frame.setObjectName("soldto_heade_frame")
self.verticalLayout_27 = QtWidgets.QVBoxLayout(self.soldto_heade_frame)
self.verticalLayout_27.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_27.setSpacing(0)
self.verticalLayout_27.setObjectName("verticalLayout_27")
self.gridLayout_4 = QtWidgets.QGridLayout()
self.gridLayout_4.setObjectName("gridLayout_4")
self.label_2 = QtWidgets.QLabel(self.soldto_heade_frame)
self.label_2.setMinimumSize(QtCore.QSize(0, 50))
self.label_2.setMaximumSize(QtCore.QSize(16777215, 50))
font = QtGui.QFont()
font.setPointSize(18)
font.setBold(False)
font.setItalic(False)
font.setWeight(50)
self.label_2.setFont(font)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_4.addWidget(self.label_2, 0, 0, 1, 1)
self.verticalLayout_27.addLayout(self.gridLayout_4)
self.verticalLayout_21.addWidget(self.soldto_heade_frame)
self.soldto_body_frame = QtWidgets.QFrame(self.soldto_frame)
self.soldto_body_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.soldto_body_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.soldto_body_frame.setObjectName("soldto_body_frame")
self.verticalLayout_22 = QtWidgets.QVBoxLayout(self.soldto_body_frame)
self.verticalLayout_22.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_22.setSpacing(0)
self.verticalLayout_22.setObjectName("verticalLayout_22")
self.gridLayout_3 = QtWidgets.QGridLayout()
self.gridLayout_3.setContentsMargins(10, 15, 10, 9)
self.gridLayout_3.setHorizontalSpacing(15)
self.gridLayout_3.setVerticalSpacing(9)
self.gridLayout_3.setObjectName("gridLayout_3")
self.soldto_update_btn = QtWidgets.QPushButton(self.soldto_body_frame)
self.soldto_update_btn.setMinimumSize(QtCore.QSize(120, 30))
font = QtGui.QFont()
font.setPointSize(10)
self.soldto_update_btn.setFont(font)
self.soldto_update_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
icon11 = QtGui.QIcon()
icon11.addPixmap(QtGui.QPixmap(":/icons/images/icons/cil-reload.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.soldto_update_btn.setIcon(icon11)
self.soldto_update_btn.setObjectName("soldto_update_btn")
self.gridLayout_3.addWidget(self.soldto_update_btn, 0, 0, 1, 1)
self.soldto_delete_btn = QtWidgets.QPushButton(self.soldto_body_frame)
self.soldto_delete_btn.setMinimumSize(QtCore.QSize(120, 30))
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(10)
self.soldto_delete_btn.setFont(font)
self.soldto_delete_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
icon12 = QtGui.QIcon()
icon12.addPixmap(QtGui.QPixmap(":/icons/images/icons/cil-user-unfollow.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.soldto_delete_btn.setIcon(icon12)
self.soldto_delete_btn.setObjectName("soldto_delete_btn")
self.gridLayout_3.addWidget(self.soldto_delete_btn, 0, 3, 1, 1)
self.soldto_edit_btn = QtWidgets.QPushButton(self.soldto_body_frame)
self.soldto_edit_btn.setMinimumSize(QtCore.QSize(120, 30))
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(10)
self.soldto_edit_btn.setFont(font)
self.soldto_edit_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
icon13 = QtGui.QIcon()
icon13.addPixmap(QtGui.QPixmap(":/icons/images/icons/cil-user.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.soldto_edit_btn.setIcon(icon13)
self.soldto_edit_btn.setObjectName("soldto_edit_btn")
self.gridLayout_3.addWidget(self.soldto_edit_btn, 0, 2, 1, 1)
self.soldto_add_btn = QtWidgets.QPushButton(self.soldto_body_frame)
self.soldto_add_btn.setMinimumSize(QtCore.QSize(120, 30))
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(10)
self.soldto_add_btn.setFont(font)
self.soldto_add_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
icon14 = QtGui.QIcon()
icon14.addPixmap(QtGui.QPixmap(":/icons/images/icons/cil-user-follow.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.soldto_add_btn.setIcon(icon14)
self.soldto_add_btn.setObjectName("soldto_add_btn")
self.gridLayout_3.addWidget(self.soldto_add_btn, 0, 1, 1, 1)
self.verticalLayout_22.addLayout(self.gridLayout_3)
self.frame_3 = QtWidgets.QFrame(self.soldto_body_frame)
self.frame_3.setMinimumSize(QtCore.QSize(0, 30))
font = QtGui.QFont()
font.setPointSize(10)
self.frame_3.setFont(font)
self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_3.setObjectName("frame_3")
self.horizontalLayout_16 = QtWidgets.QHBoxLayout(self.frame_3)
self.horizontalLayout_16.setObjectName("horizontalLayout_16")
self.soldto_error_lable = QtWidgets.QLabel(self.frame_3)
font = QtGui.QFont()
font.setPointSize(10)
self.soldto_error_lable.setFont(font)
self.soldto_error_lable.setText("")
self.soldto_error_lable.setAlignment(QtCore.Qt.AlignCenter)
self.soldto_error_lable.setObjectName("soldto_error_lable")
self.horizontalLayout_16.addWidget(self.soldto_error_lable)
self.verticalLayout_22.addWidget(self.frame_3)
self.soldto_table_frame = QtWidgets.QFrame(self.soldto_body_frame)
self.soldto_table_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.soldto_table_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.soldto_table_frame.setObjectName("soldto_table_frame")
self.horizontalLayout_13 = QtWidgets.QHBoxLayout(self.soldto_table_frame)
self.horizontalLayout_13.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_13.setSpacing(0)
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
self.soldto_table = QtWidgets.QTableWidget(self.soldto_table_frame)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.soldto_table.sizePolicy().hasHeightForWidth())
self.soldto_table.setSizePolicy(sizePolicy)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.NoBrush)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.NoBrush)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.NoBrush)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
self.soldto_table.setPalette(palette)
font = QtGui.QFont()
font.setPointSize(10)
self.soldto_table.setFont(font)
self.soldto_table.setFrameShape(QtWidgets.QFrame.NoFrame)
self.soldto_table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.soldto_table.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.soldto_table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.soldto_table.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
self.soldto_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.soldto_table.setShowGrid(True)
self.soldto_table.setGridStyle(QtCore.Qt.SolidLine)
self.soldto_table.setRowCount(0)
self.soldto_table.setColumnCount(3)
self.soldto_table.setObjectName("soldto_table")
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
self.soldto_table.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
self.soldto_table.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
self.soldto_table.setHorizontalHeaderItem(2, item)
self.soldto_table.horizontalHeader().setVisible(False)
self.soldto_table.horizontalHeader().setCascadingSectionResizes(True)
self.soldto_table.horizontalHeader().setDefaultSectionSize(160)
self.soldto_table.horizontalHeader().setStretchLastSection(True)
self.soldto_table.verticalHeader().setVisible(False)
self.soldto_table.verticalHeader().setCascadingSectionResizes(False)
self.soldto_table.verticalHeader().setHighlightSections(False)
self.soldto_table.verticalHeader().setStretchLastSection(False)
self.horizontalLayout_13.addWidget(self.soldto_table)
Продолжение ...
customer_screen222.py часть ВТОРАЯ
self.verticalLayout_22.addWidget(self.soldto_table_frame)
self.verticalLayout_21.addWidget(self.soldto_body_frame)
self.horizontalLayout_6.addWidget(self.soldto_frame)
self.shipto_frame = QtWidgets.QFrame(self.row_5)
self.shipto_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.shipto_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.shipto_frame.setObjectName("shipto_frame")
self.verticalLayout_23 = QtWidgets.QVBoxLayout(self.shipto_frame)
self.verticalLayout_23.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_23.setSpacing(0)
self.verticalLayout_23.setObjectName("verticalLayout_23")
self.shipto_header_frame = QtWidgets.QFrame(self.shipto_frame)
self.shipto_header_frame.setMinimumSize(QtCore.QSize(0, 50))
self.shipto_header_frame.setMaximumSize(QtCore.QSize(16777215, 50))
self.shipto_header_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.shipto_header_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.shipto_header_frame.setObjectName("shipto_header_frame")
self.verticalLayout_26 = QtWidgets.QVBoxLayout(self.shipto_header_frame)
self.verticalLayout_26.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_26.setSpacing(0)
self.verticalLayout_26.setObjectName("verticalLayout_26")
self.gridLayout_5 = QtWidgets.QGridLayout()
self.gridLayout_5.setSpacing(0)
self.gridLayout_5.setObjectName("gridLayout_5")
self.label_3 = QtWidgets.QLabel(self.shipto_header_frame)
self.label_3.setMaximumSize(QtCore.QSize(16777215, 40))
font = QtGui.QFont()
font.setPointSize(18)
self.label_3.setFont(font)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.gridLayout_5.addWidget(self.label_3, 0, 0, 1, 1)
self.verticalLayout_26.addLayout(self.gridLayout_5)
self.verticalLayout_23.addWidget(self.shipto_header_frame)
self.shipto_body_frame = QtWidgets.QFrame(self.shipto_frame)
self.shipto_body_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.shipto_body_frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.shipto_body_frame.setObjectName("shipto_body_frame")
self.verticalLayout_24 = QtWidgets.QVBoxLayout(self.shipto_body_frame)
self.verticalLayout_24.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_24.setSpacing(0)
self.verticalLayout_24.setObjectName("verticalLayout_24")
self.gridLayout_6 = QtWidgets.QGridLayout()
self.gridLayout_6.setContentsMargins(10, 15, 10, 9)
self.gridLayout_6.setHorizontalSpacing(15)
self.gridLayout_6.setVerticalSpacing(9)
self.gridLayout_6.setObjectName("gridLayout_6")
self.shipto_edit_btn = QtWidgets.QPushButton(self.shipto_body_frame)
self.shipto_edit_btn.setMinimumSize(QtCore.QSize(120, 30))
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(10)
self.shipto_edit_btn.setFont(font)
self.shipto_edit_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.shipto_edit_btn.setIcon(icon13)
self.shipto_edit_btn.setObjectName("shipto_edit_btn")
self.gridLayout_6.addWidget(self.shipto_edit_btn, 0, 2, 1, 1)
self.shipto_delete_btn = QtWidgets.QPushButton(self.shipto_body_frame)
self.shipto_delete_btn.setMinimumSize(QtCore.QSize(120, 30))
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(10)
self.shipto_delete_btn.setFont(font)
self.shipto_delete_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.shipto_delete_btn.setIcon(icon12)
self.shipto_delete_btn.setObjectName("shipto_delete_btn")
self.gridLayout_6.addWidget(self.shipto_delete_btn, 0, 3, 1, 1)
self.shipto_update_btn = QtWidgets.QPushButton(self.shipto_body_frame)
self.shipto_update_btn.setMinimumSize(QtCore.QSize(120, 30))
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(10)
self.shipto_update_btn.setFont(font)
self.shipto_update_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.shipto_update_btn.setIcon(icon11)
self.shipto_update_btn.setObjectName("shipto_update_btn")
self.gridLayout_6.addWidget(self.shipto_update_btn, 0, 0, 1, 1)
self.shipto_add_btn = QtWidgets.QPushButton(self.shipto_body_frame)
self.shipto_add_btn.setMinimumSize(QtCore.QSize(120, 30))
font = QtGui.QFont()
font.setFamily("Segoe UI")
font.setPointSize(10)
self.shipto_add_btn.setFont(font)
self.shipto_add_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.shipto_add_btn.setIcon(icon14)
self.shipto_add_btn.setObjectName("shipto_add_btn")
self.gridLayout_6.addWidget(self.shipto_add_btn, 0, 1, 1, 1)
self.verticalLayout_24.addLayout(self.gridLayout_6)
self.frame_4 = QtWidgets.QFrame(self.shipto_body_frame)
self.frame_4.setMinimumSize(QtCore.QSize(0, 30))
font = QtGui.QFont()
font.setPointSize(10)
self.frame_4.setFont(font)
self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_4.setObjectName("frame_4")
self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.frame_4)
self.horizontalLayout_7.setContentsMargins(9, 9, 9, 9)
self.horizontalLayout_7.setSpacing(6)
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.shipto_error_lable = QtWidgets.QLabel(self.frame_4)
font = QtGui.QFont()
font.setPointSize(10)
self.shipto_error_lable.setFont(font)
self.shipto_error_lable.setText("")
self.shipto_error_lable.setAlignment(QtCore.Qt.AlignCenter)
self.shipto_error_lable.setObjectName("shipto_error_lable")
self.horizontalLayout_7.addWidget(self.shipto_error_lable)
self.verticalLayout_24.addWidget(self.frame_4)
self.shipto_frame_table = QtWidgets.QFrame(self.shipto_body_frame)
self.shipto_frame_table.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.shipto_frame_table.setFrameShadow(QtWidgets.QFrame.Raised)
self.shipto_frame_table.setObjectName("shipto_frame_table")
self.horizontalLayout_10 = QtWidgets.QHBoxLayout(self.shipto_frame_table)
self.horizontalLayout_10.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_10.setSpacing(0)
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
self.shipto_table = QtWidgets.QTableWidget(self.shipto_frame_table)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.shipto_table.sizePolicy().hasHeightForWidth())
self.shipto_table.setSizePolicy(sizePolicy)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.NoBrush)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.NoBrush)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(51, 51, 51))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.NoBrush)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
self.shipto_table.setPalette(palette)
font = QtGui.QFont()
font.setPointSize(10)
self.shipto_table.setFont(font)
self.shipto_table.setFrameShape(QtWidgets.QFrame.NoFrame)
self.shipto_table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
self.shipto_table.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.shipto_table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.shipto_table.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
self.shipto_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.shipto_table.setShowGrid(True)
self.shipto_table.setGridStyle(QtCore.Qt.SolidLine)
self.shipto_table.setRowCount(0)
self.shipto_table.setColumnCount(3)
self.shipto_table.setObjectName("shipto_table")
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
self.shipto_table.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
self.shipto_table.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
self.shipto_table.setHorizontalHeaderItem(2, item)
self.shipto_table.horizontalHeader().setVisible(False)
self.shipto_table.horizontalHeader().setCascadingSectionResizes(True)
self.shipto_table.horizontalHeader().setDefaultSectionSize(160)
self.shipto_table.horizontalHeader().setStretchLastSection(True)
self.shipto_table.verticalHeader().setVisible(False)
self.shipto_table.verticalHeader().setCascadingSectionResizes(False)
self.shipto_table.verticalHeader().setHighlightSections(False)
self.shipto_table.verticalHeader().setStretchLastSection(False)
self.horizontalLayout_10.addWidget(self.shipto_table)
self.verticalLayout_24.addWidget(self.shipto_frame_table)
self.verticalLayout_23.addWidget(self.shipto_body_frame)
self.horizontalLayout_6.addWidget(self.shipto_frame)
self.verticalLayout_20.addWidget(self.row_5)
self.soldto_update_btn.clicked.connect(self.upload_Soldto_from_DB)
self.soldto_add_btn.clicked.connect(self.go_to_Create_Client)
self.soldto_edit_btn.clicked.connect(self.go_to_Edit_Client)
self.soldto_delete_btn.clicked.connect(self.go_to_Delete_Client)
# !!! обратите внимание что все .ui убраны
# !!! --> vvv
# !!! self.ui.soldto_table.setRowCount(0)
def upload_Soldto_from_DB(self):
conn = sqlite3.Connection(db_path)
create_customers_table = """
CREATE TABLE IF NOT EXISTS Customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
SoldTo INTEGER not null,
SoldTo_name VARCHAR (100),
CONSTRAINT Cust_Index UNIQUE (SoldTo, SoldTo_name) ON CONFLICT REPLACE);
"""
conn.execute(create_customers_table)
conn.commit()
show_customer_data = 'SELECT SoldTo, SoldTo_name FROM Customers'
result = conn.execute(show_customer_data)
self.soldto_table.setRowCount(0)
for row_number, row_data in enumerate(result):
self.soldto_table.insertRow(row_number)
for column_number, data in enumerate(row_data):
self.soldto_table.setItem(row_number, column_number, QtWidgets.QTableWidgetItem(str(data)))
conn.close()
self.soldto_error_lable.setText('Table was updated successfully')
def go_to_Create_Client(self):
print('Sold-to Create Btn clicked')
def go_to_Edit_Client(self):
print('Sold-to Edit Btn clicked')
def go_to_Delete_Client(self):
print('Sold-to Delete Btn clicked')

