【问题标题】:populate combobox editable human_name and line edit phone and email from mariadb从 mariadb 填充组合框可编辑的 human_name 和行编辑电话和电子邮件
【发布时间】:2021-06-21 07:20:47
【问题描述】:

我有表 hr 和 1 个包含 hr 列表的组合框,我想向 hremail_lineEdithrphone_lineEdit 显示电子邮件和电话,但我只能向 hrphone_lineEdit 显示电话。

def hr_name(self):
    self._conn = pymysql.connect(host=127.0.0.1, port=3306, user='root', passwd=root, db='testhr', charset='utf8')
    self._cur = self._conn.cursor()
    sql_coop4hr = 'select human_name,email,phone from hr'
    count_coop4hr = self._cur.execute(sql_coop4hr)
    res_coop4hr = self._cur.fetchall()
    for row in res_coop4hr:
        un, email, phone = row
        self.hr_name_comboBox.addItem(un, email)

def hr_email(self):
    self.hremail_lineEdit.setText(self.hr_name_comboBox.currentData()) #email
    self.hrphone_lineEdit.setText(self.hr_name_comboBox.currentData()) #phone

【问题讨论】:

    标签: python python-3.x pyqt5 mariadb qcombobox


    【解决方案1】:

    有几种选择:

    • 将电子邮件和电话作为元组(或列表)传递给 userData:

      self.hr_name_comboBox.clear()
      for row in res_coop4hr:
          un, email, phone = row
          self.hr_name_comboBox.addItem(un, (email, phone))
      
      def hr_email(self):
          email, phone = self.hr_name_comboBox.currentData()
          self.hremail_lineEdit.setText(email)
          self.hrphone_lineEdit.setText(phone)
      
    • 为每个数据创建 2 个角色:

      EMAIL_ROLE = Qt.UserRole
      PHONE_ROLE = Qt.UserRole + 1
      
      self.hr_name_comboBox.clear()
      for i, row in enumerate(res_coop4hr):
          un, email, phone = row
          self.hr_name_comboBox.insertItem(i, un)
          self.hr_name_comboBox.setItemData(i, email, EMAIL_ROLE)
          self.hr_name_comboBox.setItemData(i, phone, PHONE_ROLE)
      
      def hr_email(self):
          index = self.hr_name_comboBox.currentIndex()
          email = self.hr_name_comboBox.itemData(index, EMAIL_ROLE)
          phone = self.hr_name_comboBox.itemData(index, PHONE_ROLE)
          self.hremail_lineEdit.setText(email)
          self.hrphone_lineEdit.setText(phone)
      

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      相关资源
      最近更新 更多