【发布时间】:2021-05-17 00:26:49
【问题描述】:
我正在使用 PyQt 5 制作频率表当我运行代码时,会弹出窗口,在屏幕上绘制符号,但随后窗口冻结。然后它说它没有响应。我不明白发生了什么。代码如下:
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QTableWidget,QTableWidgetItem,QVBoxLayout
from pynput.mouse import Button, Controller
from pynput.keyboard import Listener, KeyCode
a=KeyCode(char='r')
def getSelectedItemData():
for currentItem in tableWidget.selectedItems():
print("ROw : "+str(currentItem.row())+" Column : "+str(currentItem.column())+" "+currentItem.text())
app=QApplication(sys.argv)
qwidget=QWidget()
qwidget.setWindowTitle("Python GUI Table")
qwidget.resize(300,400)
layout=QVBoxLayout()
tableWidget=QTableWidget()
tableWidget.setColumnCount(3)
tableWidget.setRowCount(2)
#adding item in table
tableWidget.setHorizontalHeaderItem(0,QTableWidgetItem("Scores"))
tableWidget.setHorizontalHeaderItem(1,QTableWidgetItem("Frquency"))
tableWidget.setHorizontalHeaderItem(2,QTableWidgetItem("FX"))
tableWidget.setItem(0,0,QTableWidgetItem(""))
tableWidget.setItem(0,1,QTableWidgetItem(""))
tableWidget.setItem(0,2,QTableWidgetItem(""))
tableWidget.setItem(1,0,QTableWidgetItem(""))
tableWidget.setItem(1,1,QTableWidgetItem(""))
tableWidget.setItem(1,2,QTableWidgetItem(""))
tableWidget.setItem(2,0,QTableWidgetItem(""))
tableWidget.setItem(2,1,QTableWidgetItem(""))
tableWidget.setItem(2,2,QTableWidgetItem(""))
tableWidget.setItem(3,0,QTableWidgetItem(""))
tableWidget.setItem(3,1,QTableWidgetItem(""))
tableWidget.setItem(3,2,QTableWidgetItem(""))
tableWidget.doubleClicked.connect(getSelectedItemData)
layout.addWidget(tableWidget)
qwidget.setLayout(layout)
qwidget.show()
#Adding loop
def on_press(key):
if key == a:
tableWidget.insertRow(tableWidget.rowCount()+1)
with Listener(on_press=on_press) as listener:
listener.join()
sys.exit(app.exec_())
【问题讨论】: