PYQTの可視化
PYQTの例
転載先:https://www.cnblogs.com/Afrafre/p/11377241.html
import json
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
data = [{'id':'1','pairs':'EOS','price':'18'},{'id':'2','pairs':'BTC','price':'1'},{'id':'3','pairs':'USDT','price':'333'},{'id':'4','pairs':'BSV','price':'555'},{'id':'5','pairs':'BSV','price':'555'}]
HEAD_LIST = ['id',' ', ' ', ' ',' ',' ']
COLUMN = len(HEAD_LIST)
ROW = len(data)
#
class EmptyDelegate(QItemDelegate):
def __init__(self, parent):
super(EmptyDelegate, self).__init__(parent)
def createEditor(self, QWidget, QStyleOptionViewItem, QModelIndex):
return None
class TabWidget(QTabWidget,QWidget):
def __init__(self, parent=None):
super(TabWidget, self).__init__(parent)
self.setWindowTitle(" ")
self.resize(900,800)
#
self.tab1 = QWidget()
self.tab2 = QWidget()
self.addTab(self.tab1,' 1')
self.addTab(self.tab2,' 2')
self.tableWidget = QTableWidget()
self.tab1UI().init_event()
self.tab2UI(data,self.tableWidget)
######### #################
def tab1UI(self):
layout = QFormLayout()
# [-360,360], : 2
doubleValidator = QDoubleValidator(self)
doubleValidator.setRange(-360, 360)
doubleValidator.setNotation(QDoubleValidator.StandardNotation)
# , 2
doubleValidator.setDecimals(2)
#
reg = QRegExp('[A-Za-z0-9-_]+$')
validator = QRegExpValidator(self)
validator.setRegExp(reg)
self.button = QPushButton(' ')
self.name_label = QLabel(self.tr(" "))
self.delegate_combobox = QComboBox()
self.delegate_combobox.addItem(self.tr(' '))
self.delegate_combobox.addItem(self.tr(' '))
self.delegate_combobox.addItem(self.tr(' '))
layout.addRow(" ", self.delegate_combobox)
self.pair_name_edit = QLineEdit()
layout.addRow(' ', self.pair_name_edit)
self.pair_name_edit.setPlaceholderText(' :ETC_USDT')
self.pair_name_edit.setValidator(validator)
self.price_edit = QLineEdit()
layout.addRow(' ',self.price_edit)
self.price_edit.setPlaceholderText(' ')
self.price_edit.setValidator(doubleValidator)
self.quantity_edit = QLineEdit()
layout.addRow(' ',self.quantity_edit)
self.quantity_edit.setPlaceholderText(' ')
self.quantity_edit.setValidator(doubleValidator)
self.other1_edit = QLineEdit()
layout.addRow(' 1', self.other1_edit)
self.other1_edit.setPlaceholderText(' ')
self.other2_edit = QLineEdit()
layout.addRow(' 2', self.other2_edit)
self.other2_edit.setPlaceholderText(' ')
self.setTabText(0,' ')
self.tab1.setLayout(layout)
layout.addWidget(self.button)
return self
def init_event(self):
self.button.clicked.connect(self.get_info)
def get_info(self):
delegate_type = self.delegate_combobox.currentText()
pair_name = self.pair_name_edit.text()
price = self.price_edit.text()
number = self.quantity_edit.text()
other1 = self.other1_edit.text()
other2 = self.other2_edit.text()
if not all([delegate_type, pair_name, price,number,other1,other2]):
QMessageBox.about(self, ' ', ' !!')
return
choice = QMessageBox.question(self, '', ' ?', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
if choice == 16384 :
self.pair_name_edit.clear()
self.price_edit.clear()
self.quantity_edit.clear()
self.other1_edit.clear()
self.other2_edit.clear()
adjust_coefficient_dict = {" ": delegate_type, ' ': pair_name, ' ': price, ' ': number,
' 1': other1, ' 2': other2}
# with open('coefficient.txt','at',encoding='utf-8') as f:
# f.write(json.dumps(adjust_coefficient_dict,ensure_ascii=False)+'
')
print(adjust_coefficient_dict)
######### ###################
def tab2UI(self,data,tableWidget):
#
self.currentPage = 0
#
self.totalPage = 0
#
self.totalRecrodCount = 0
#
self.PageRecordCount = 2
#
self.createWindow(tableWidget)
# ,
self.setTableData(tableWidget,data)
#
self.prevButton.clicked.connect(self.onPrevButtonClick)
self.nextButton.clicked.connect(self.onNextButtonClick)
self.switchPageButton.clicked.connect(self.onSwitchPageButtonClick)
def createWindow(self,tableWidget):
#
operatorLayout = QHBoxLayout()
self.prevButton = QPushButton(" ")
self.nextButton = QPushButton(" ")
self.switchPageButton = QPushButton("Go")
self.switchPageLineEdit = QLineEdit()
self.switchPageLineEdit.setFixedWidth(40)
switchPage = QLabel(" ")
page = QLabel(" ")
operatorLayout.addWidget(self.prevButton)
operatorLayout.addWidget(self.nextButton)
operatorLayout.addWidget(switchPage)
operatorLayout.addWidget(self.switchPageLineEdit)
operatorLayout.addWidget(page)
operatorLayout.addWidget(self.switchPageButton)
operatorLayout.addWidget(QSplitter())
#
statusLayout = QHBoxLayout()
self.totalPageLabel = QLabel()
self.totalPageLabel.setFixedWidth(70)
self.currentPageLabel = QLabel()
self.currentPageLabel.setFixedWidth(70)
self.totalRecordLabel = QLabel()
self.totalRecordLabel.setFixedWidth(70)
statusLayout.addWidget(self.totalPageLabel)
statusLayout.addWidget(self.currentPageLabel)
statusLayout.addWidget(QSplitter())
statusLayout.addWidget(self.totalRecordLabel)
self.setTabText(1, ' ')
# , ,
tableWidget.setRowCount(ROW)
tableWidget.setColumnCount(COLUMN)
tableWidget.setHorizontalHeaderLabels(HEAD_LIST)
tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
#
layout = QVBoxLayout()
layout.addLayout(operatorLayout)
layout.addWidget(tableWidget)
layout.addLayout(statusLayout)
self.tab2.setLayout(layout)
def setTableData(self,tableWidget,data):
''' '''
for i in range(len(data)):
idItem = QTableWidgetItem(data[i]['id'])
tableWidget.setItem(i, 0, idItem)
textItem = QTableWidgetItem(data[i]['pairs'])
tableWidget.setItem(i, 1, textItem)
priceItem = QTableWidgetItem(data[i]['price'])
tableWidget.setItem(i, 2, priceItem)
modifyButton = QPushButton(' ')
modifyButton.clicked.connect(self.modify_data)
tableWidget.setCellWidget(i, 3, modifyButton)
delbutton = QPushButton(' ')
delbutton.clicked.connect(self.delete_data)
tableWidget.setCellWidget(i, 4, delbutton)
addbutton = QPushButton(' ')
addbutton.clicked.connect(self.add_data)
tableWidget.setCellWidget(i, 5, addbutton)
# id
tableWidget.setItemDelegateForColumn(0, EmptyDelegate(self))
#
@QtCore.pyqtSlot()
def add_data(self):
#
id, id_ok = QInputDialog.getInt(self, 'id ', 'id')
pairs, pairs_ok = QInputDialog.getText(self, ' ', ' ')
price, price_ok = QInputDialog.getDouble(self, ' ', ' ',decimals=2)
# , ,id 。。。
if not all([id, id_ok, pairs,pairs_ok,price,price_ok]):
return
#
rowPosition = self.tableWidget.rowCount() #
self.tableWidget.insertRow(rowPosition)
self.tableWidget.setItem(rowPosition, 0, QTableWidgetItem(str(id)))
self.tableWidget.setItem(rowPosition, 1, QTableWidgetItem(pairs))
self.tableWidget.setItem(rowPosition, 2, QTableWidgetItem(str(price)))
modifyButton = QPushButton(' ')
modifyButton.clicked.connect(self.modify_data)
self.tableWidget.setCellWidget(rowPosition, 3, modifyButton)
delbutton = QPushButton(' ')
delbutton.clicked.connect(self.delete_data)
self.tableWidget.setCellWidget(rowPosition, 4, delbutton)
addbutton = QPushButton(' ')
addbutton.clicked.connect(self.add_data)
self.tableWidget.setCellWidget(rowPosition, 5, addbutton)
# , id, pairs, price , data
add_dic = {'id': id, 'pairs': pairs, 'price': price}
print(' : %s'%add_dic)
#
@QtCore.pyqtSlot()
def modify_data(self):
button = self.sender()
key_list = ['id','pairs', 'price']
new_dic = {}
if button:
row = self.tableWidget.indexAt(button.pos()).row()
id = self.tableWidget.item(row, 0).text()
# for , data
for column in range(len(key_list)):
content = self.tableWidget.item(row, column).text()
new_dic[key_list[column]] = content
print(' id %s , %s'%(id,new_dic))
# id data...
#
@QtCore.pyqtSlot()
def delete_data(self):
button = self.sender()
if button:
row = self.tableWidget.indexAt(button.pos()).row()
# , id
id = self.tableWidget.item(row, 0).text()
self.tableWidget.removeRow(row)
print(' id %s '%id)
# data id 。。。
def onPrevButtonClick(self):
''' '''
pass
def onNextButtonClick(self):
''' '''
pass
def onSwitchPageButtonClick(self):
'''go '''
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = TabWidget()
demo.show()
sys.exit(app.exec_())
転載先:https://www.cnblogs.com/Afrafre/p/11377241.html