【发布时间】:2021-06-04 21:07:00
【问题描述】:
我正在尝试制作一个由 :
组成的 GUI- 一个QLineEdit()
- 一个QpushButton()
- 两个QlistWidget()
我想做的是在列表之一中显示我在 QLineEdit() 小部件上输入的文本,但有一些条件。
当 QLineEdit() 栏中输入的结果与字符串 '10' 不同时,GUI 在第一个 QlistWidget() 上显示该字符串,它显示否则是第二个列表。
我的代码如下:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Principale(QMainWindow):
simpleSig = pyqtSignal(str)
def __init__(self):
super().__init__()
self.search = QPushButton('Search')
self.TextEdit = QLineEdit()
self.list = QListWidget()
self.list1 = QListWidget()
self.layout0 = QHBoxLayout()
self.layout0.addWidget(self.search)
self.layout0.addWidget(self.TextEdit)
self.layout1 = QHBoxLayout()
self.layout1.addWidget(self.list)
self.layout1.addWidget(self.list1)
if self.TextEdit.text().lower() != '10':
self.simpleSig.connect(self.simpleSlot)
else:
self.simpleSig.connect(self.argumentSlot)
self.GridLayout = QGridLayout()
self.GridLayout.addLayout(self.layout0, 0, 0)
self.GridLayout.addLayout(self.layout1, 1, 0)
self.main_Widget = QWidget()
self.main_Widget.setLayout(self.GridLayout)
self.setCentralWidget(self.main_Widget)
self.search.clicked.connect(self.buttonClicked)
def buttonClicked(self):
self.simpleSig.emit(self.TextEdit.text().lower())
def simpleSlot(self, stringArg):
self.list.addItem(stringArg)
def argumentSlot(self, stringArg):
self.list1.addItem(stringArg)
# Main
monApp = QApplication(sys.argv)
fenetre = Principale()
fenetre.show()
sys.exit(monApp.exec_())
如您所见,我使用了自定义信号,并尝试将其链接到不同的插槽上,以根据条件实现不同的结果。
但是它不起作用,无论键入的值是什么,它仍然显示在第一个列表中。
有人可以帮帮我吗?
【问题讨论】: