Hi.
This is may main.py file
import sys
from PySide6 import QtWidgets
from ui_mainwindow import Ui_Dialog
from PySide6.QtWidgets import (QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QMessageBox, QApplication)
from PySide6.QtCore import Qt
#from test_zpl import run_printer2
class CustomDialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Confirme sua impressão.")
QBtn = QDialogButtonBox.Ok | QDialogButtonBox.Cancel
self.buttonBox = QDialogButtonBox(QBtn)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.layout = QVBoxLayout()
message = QLabel("Deseja executar a impressão?")
self.layout.addWidget(message)
self.layout.addWidget(self.buttonBox)
self.setLayout(self.layout)
class MainWindow(QtWidgets.QMainWindow, Ui_Dialog, CustomDialog):
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self)
self.main_tab.setCurrentIndex(4)
self.cb_setores.addItems(["Devolução","Maturação de Gelo","Recebimento","Segregados","Informação"])
self.cb_setores.setCurrentIndex(4)
self.cb_setores.currentIndexChanged.connect(self.index_changed)
# Button to print data
self.pb_print.clicked.connect(self.get_data_from_table)
# set up table
colunas_seg = ["Laboratório", "Código Fornecedor", "Material", "Lote", "Quantidade", "Descrição", "UD", "CD", "Volume"]
self.tb_segregados.setHorizontalHeaderLabels(colunas_seg)
def index_changed(self, index):
self.main_tab.setCurrentIndex(index)
def get_data_from_table(self, s):
#run_printer2(opt=dic_segreg) # Passar um Dict como parametro.
self.msg = CustomDialog()
if self.msg.exec():
dlg = QMessageBox(self)
dlg.setWindowTitle("Impressão!")
dlg.setText("Dados enviado para impressora!")
button = dlg.exec()
if button == QMessageBox.Ok:
print("Dados enviado para impressora!")
else:
print("Impressão cancelada!")
def keyPressEvent(self, event) -> None:
# Font: https://github.com/ingwant/PyQt5-Video-Book
super().keyPressEvent(event)
try:
# Check keyboard input(Ctrl + V) to accomplish of paste
if event.key() == Qt.Key.Key_V and (event.modifiers() & Qt.KeyboardModifier.ControlModifier):
selection = self.tb_segregados.selectedIndexes()
if selection:
# Get the first selected cell position
row_anchor = selection[0].row()
column_anchor = selection[0].column()
# Create clipboard object to read data from clipboard
clipboard = QApplication.clipboard()
# Get data list from clipboard
rows = clipboard.text().split('\n')
# Add more rows if current row count doesn't match the new row count needed
if self.tb_segregados.rowCount() < row_anchor + len(rows) - 1:
self.tb_segregados.setRowCount(row_anchor + len(rows) - 1)
# Show data in table widget which gets from Excel file
for index_row, row in enumerate(rows):
values = row.split("\t")
for index_col, value in enumerate(values):
item = self.tb_segregados(value)
self.tb_segregados.setItem(row_anchor + index_row, column_anchor + index_col, item)
# Check keyboard input(Ctrl + C) to accomplish copy
# Check keyboard input(Ctrl + X) to accomplish cut
if (event.key() == Qt.Key.Key_C or event.key() == Qt.Key.Key_X) \
and (event.modifiers() & Qt.KeyboardModifier.ControlModifier):
# get the selection section data
copied_cell = sorted(self.tb_segregados.selectedIndexes())
# Define a variable to save selected data
copy_text = ""
max_column = copied_cell[-1].column()
for cell in copied_cell:
# Get each cell text
cell_item = self.tb_segregados.item(cell.row(), cell.column())
if cell_item:
copy_text += cell_item.text()
# Clear data in table widget when it cuts data
if event.key() == Qt.Key.Key_X:
cell_item.setText("")
else:
copy_text += ""
# Format the copied data for paste into Excel file
if cell.column() == max_column:
copy_text += "\n"
else:
copy_text += "\t"
# Save data into clipboard
QApplication.clipboard().setText(copy_text)
except Exception as e:
print(e)
pass
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
This is may ui_mainwindow.py file
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'mainwindowYgPvkx.ui'
##
## Created by: Qt User Interface Compiler version 6.6.0
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QComboBox, QDialog, QFrame,
QHeaderView, QLabel, QPushButton, QSizePolicy,
QStackedWidget, QTableWidget, QTableWidgetItem, QWidget)
class Ui_Dialog(object):
def setupUi(self, Dialog):
if not Dialog.objectName():
Dialog.setObjectName(u"Dialog")
Dialog.resize(1042, 514)
self.frame = QFrame(Dialog)
self.frame.setObjectName(u"frame")
self.frame.setGeometry(QRect(10, 20, 1021, 71))
self.frame.setFrameShape(QFrame.StyledPanel)
self.frame.setFrameShadow(QFrame.Raised)
self.cb_setores = QComboBox(self.frame)
self.cb_setores.setObjectName(u"cb_setores")
self.cb_setores.setGeometry(QRect(10, 11, 401, 31))
font = QFont()
font.setFamilies([u"Arial"])
font.setPointSize(12)
font.setBold(True)
self.cb_setores.setFont(font)
self.cb_setores.setStyleSheet(u"background-color: rgb(85, 170, 255);")
self.pb_print = QPushButton(self.frame)
self.pb_print.setObjectName(u"pb_print")
self.pb_print.setGeometry(QRect(864, 3, 101, 41))
font1 = QFont()
font1.setFamilies([u"Arial"])
font1.setPointSize(10)
font1.setBold(True)
self.pb_print.setFont(font1)
self.pb_print.setCursor(QCursor(Qt.PointingHandCursor))
self.frame_2 = QFrame(Dialog)
self.frame_2.setObjectName(u"frame_2")
self.frame_2.setGeometry(QRect(10, 100, 1021, 371))
self.frame_2.setStyleSheet(u"background-color: rgb(169, 170, 156);")
self.frame_2.setFrameShape(QFrame.StyledPanel)
self.frame_2.setFrameShadow(QFrame.Raised)
self.main_tab = QStackedWidget(self.frame_2)
self.main_tab.setObjectName(u"main_tab")
self.main_tab.setGeometry(QRect(10, 10, 1001, 351))
self.main_tab.setStyleSheet(u"background-color: rgb(170, 170, 127);")
self.pg_devolucao = QWidget()
self.pg_devolucao.setObjectName(u"pg_devolucao")
self.lb_devolucao = QLabel(self.pg_devolucao)
self.lb_devolucao.setObjectName(u"lb_devolucao")
self.lb_devolucao.setGeometry(QRect(20, 10, 121, 21))
font2 = QFont()
font2.setFamilies([u"Arial"])
font2.setPointSize(14)
font2.setBold(True)
self.lb_devolucao.setFont(font2)
self.tb_dev = QTableWidget(self.pg_devolucao)
if (self.tb_dev.columnCount() < 9):
self.tb_dev.setColumnCount(9)
if (self.tb_dev.rowCount() < 4):
self.tb_dev.setRowCount(4)
self.tb_dev.setObjectName(u"tb_dev")
self.tb_dev.setGeometry(QRect(10, 50, 971, 300))
self.tb_dev.setRowCount(4)
self.tb_dev.setColumnCount(9)
self.main_tab.addWidget(self.pg_devolucao)
self.pg_mat_gelo = QWidget()
self.pg_mat_gelo.setObjectName(u"pg_mat_gelo")
self.lb_mat_gelo = QLabel(self.pg_mat_gelo)
self.lb_mat_gelo.setObjectName(u"lb_mat_gelo")
self.lb_mat_gelo.setGeometry(QRect(20, 10, 171, 21))
self.lb_mat_gelo.setFont(font2)
self.main_tab.addWidget(self.pg_mat_gelo)
self.pg_recebimento = QWidget()
self.pg_recebimento.setObjectName(u"pg_recebimento")
self.lb_recebimento = QLabel(self.pg_recebimento)
self.lb_recebimento.setObjectName(u"lb_recebimento")
self.lb_recebimento.setGeometry(QRect(20, 10, 121, 21))
self.lb_recebimento.setFont(font2)
self.tb_recebimento = QTableWidget(self.pg_recebimento)
if (self.tb_recebimento.columnCount() < 9):
self.tb_recebimento.setColumnCount(9)
if (self.tb_recebimento.rowCount() < 4):
self.tb_recebimento.setRowCount(4)
self.tb_recebimento.setObjectName(u"tb_recebimento")
self.tb_recebimento.setGeometry(QRect(10, 50, 971, 300))
self.tb_recebimento.setRowCount(4)
self.tb_recebimento.setColumnCount(9)
self.main_tab.addWidget(self.pg_recebimento)
self.pg_segregados = QWidget()
self.pg_segregados.setObjectName(u"pg_segregados")
self.lb_segregados = QLabel(self.pg_segregados)
self.lb_segregados.setObjectName(u"lb_segregados")
self.lb_segregados.setGeometry(QRect(20, 10, 121, 21))
self.lb_segregados.setFont(font2)
self.tb_segregados = QTableWidget(self.pg_segregados)
if (self.tb_segregados.columnCount() < 9):
self.tb_segregados.setColumnCount(9)
if (self.tb_segregados.rowCount() < 4):
self.tb_segregados.setRowCount(4)
self.tb_segregados.setObjectName(u"tb_segregados")
self.tb_segregados.setGeometry(QRect(10, 50, 971, 300))
self.tb_segregados.setRowCount(4)
self.tb_segregados.setColumnCount(9)
self.main_tab.addWidget(self.pg_segregados)
self.pd_default = QWidget()
self.pd_default.setObjectName(u"pd_default")
self.lb_default = QLabel(self.pd_default)
self.lb_default.setObjectName(u"lb_default")
self.lb_default.setGeometry(QRect(70, 20, 651, 101))
font3 = QFont()
font3.setFamilies([u"Arial"])
font3.setPointSize(16)
font3.setBold(True)
self.lb_default.setFont(font3)
self.lb_default.setWordWrap(True)
self.main_tab.addWidget(self.pd_default)
self.retranslateUi(Dialog)
self.main_tab.setCurrentIndex(2)
QMetaObject.connectSlotsByName(Dialog)
# setupUi
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None))
self.pb_print.setText(QCoreApplication.translate("Dialog", u"Imprimir", None))
self.lb_devolucao.setText(QCoreApplication.translate("Dialog", u"Devolu\u00e7\u00e3o", None))
self.lb_mat_gelo.setText(QCoreApplication.translate("Dialog", u"Matura\u00e7\u00e3o de Gelo", None))
self.lb_recebimento.setText(QCoreApplication.translate("Dialog", u"Recebimento", None))
self.lb_segregados.setText(QCoreApplication.translate("Dialog", u"Segregados", None))
self.lb_default.setText(QCoreApplication.translate("Dialog", u"Favor escolher um setor para iniciar o processo de impress\u00e3o. Use a caixa de combina\u00e7\u00e3o acima para selecionar a op\u00e7\u00e3o desejada.", None))
# retranslateUi
Tks