PYQT Выбранный элемент со списком должен удалить элемент из другого списка. - PullRequest
0 голосов
/ 18 декабря 2018

Я очень новичок в Python и просто хочу создать пользовательский интерфейс с PYQT.Мои проблемы в основном из-за механизма между двумя выпадающими списками.В одном выпадающем списке выбранный элемент должен удалить элемент из другого выпадающего списка.

Я пробовал это:

self.ui.combobox1.activated.connect(self.combobox2)  

def remove_Item(self):                            
       if self.ui.combobox1.?????(.currentselection?) == "selected item (name or Index?)": 
             self.ui.combobox2.removeItem(self, Index)
       elif....

Combobox 1 подает сигнал активации Combobox 2, может я упускаю момент, когда функция не связана с активированным сигналом?Функция спрашивает, если один элемент выбран в выпадающем списке 1, он должен удалить элемент в выпадающем списке 2.

Чтобы быть более понятным -> Моя цель состоит в том, чтобы в конце было приложение, в котором я могувыберите сотрудника в поле со списком "xy", который болен или находится в отпуске, и этот сотрудник должен исчезнуть в другом поле со списком.Я борюсь с этой задачей, и я очень расстроен.Может быть, у кого-то есть решение моей проблемы.:)

Обновление:

import sys
from qtpy import QtWidgets

from ui.mainwindow import Ui_MainWindow

app = QtWidgets.QApplication(sys.argv)

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent = None):
        super().__init__(parent)

        self.setWindowTitle("ZSP")


        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.B29.addItems(['','xxx', 'yyy', 'zzz'])
        self.ui.comboBox.addItems(['','xxx', 'yyy', 'zzz'])

        self.ui.comboBox.activated.connect(self.example_1)

    def example_1(self):
        index = self.ui.comboBox.findText("xxx")
        self.ui.B29.removeItem(index)
        index_1 = self.ui.comboBox.findText("yyy")
        self.ui.B29.removeItem(index_1)
        index_2 = self.ui.comboBox.findText("zzz")
        self.ui.B29.removeItem(index_2)





window = MainWindow()

window.show()

sys.exit(app.exec_())

Когда я запускаю этот код:

Не имеет значения, какой элемент я бы выбрал, он всегда удаляет zzz и xxx».Даже при том, что я пытаюсь отделить каждый элемент от функции, в то время как эти функции соответствуют self.ui.combobox.currenTextChanged.connection (self.def_1 / def_2 / def_3), например.Извините, что я резко упустил из примера: - /

1 Ответ

0 голосов
/ 18 декабря 2018

PyQt имеет механизм сигнала / слота, то есть вы можете сделать какой-то слот, когда какой-то сигнал запускается.

Например, в вашем случае QComboBox имеет сигнал currentTextChanged , он будет срабатывать при выборе элемента в выпадающем списке.Когда этот сигнал срабатывает, вы можете связать его с вашим слотом, и слот будет делать то, что вы хотите, удалить элемент в другом комбинированном окне.

Вот пример кода:

class MainWindow(QWidget):

    def __init__(self):
        super(MainWindow, self).__init__()
        self.combo1 = QComboBox()
        self.combo2 = QComboBox()
        self.combo1.addItems(['1', '2', '3', '4', '5'])
        self.combo2.addItems(['1', '2', '3', '4', '5'])
        # This line link the signal - currentTextChanged to slot - del_item_in_combo
        self.combo1.currentTextChanged.connect(self.del_item_in_combo)
        layout = QHBoxLayout()
        layout.addWidget(self.combo1)
        layout.addWidget(self.combo2)
        self.setLayout(layout)
        self.setWindowTitle("combo box demo")

    def del_item_in_combo(self, text):
        # currentTextChanged signal will pass selected text to slot
        index = self.combo2.findText(text)  # find the index of text
        self.combo2.removeItem(index)  # remove item from index
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...