簡體   English   中英

Pyqt-組合框,如何返回所選文本

[英]Pyqt - Combobox, how to return selected text

我需要程序幫助。 這是我的Hole程序的一部分,我需要我的combobox的幫助,我有一個combobox ADV,此combobox的數據來自我的db ...我需要在combobox上獲取所選項目並將其作為變量傳遞,因為之后,我將創建一個tablewidget並使用名稱作為參數插入數據庫的內容,以從表中獲取“東西”。例如:我在此組合中選擇“ rororo” ..因此將其選中..然后通過將其作為變量,然后在我的數據庫中搜索該變量。 我知道如何進行搜索,但是我不知道如何將其作為變量傳遞。.我在“ pass_t” def中具有該變量。但是我想將其返回給setupUI def來進行搜索。

from PyQt4.QtGui import * 
from PyQt4.QtSql import * 
from PyQt4.QtCore import * 
import sys

try:
  _fromUtf8 = QString.fromUtf8
except AttributeError:
  _fromUtf8 = lambda s: s

class Ui_MainWindow(object):

  def setupUi(self, MainWindow):
      MainWindow.setObjectName(_fromUtf8("MainWindow"))
      MainWindow.resize(800, 600)
      self.centralwidget = QWidget(MainWindow)
      self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
      self.comboADV = QComboBox(self.centralwidget)
      self.comboADV.setGeometry(QRect(110, 80, 91, 31))
      self.comboADV.setObjectName(_fromUtf8("comboADV"))
      self.comboADV.addItem(_fromUtf8(""))
      db = QSqlDatabase.addDatabase("QMYSQL")
      db.setHostName('localhost')
      db.setDatabaseName('database')
      db.setUserName('username')
      db.setPassword('password')
      if (db.open()==False):     

        QMessageBox.critical(None, "Database Error",
            db.lastError().text())   
      query  = QSqlQuery ("SELECT Palavra FROM Tabela053 WHERE Categoria='Adv.' ORDER BY Palavra ASC;")
      index=0
      while (query.next()):
      self.comboADV.addItem(query.value(0).toString())
      index = index+1
      self.comboADV.activated.connect(self.passtt) #want to change this
#---------------------------------------important
  def passtt(self):
      a = self.comboADV.currentText()
      print a #here i can print the selected content of my comboADV
if __name__ == "__main__":
  import sys

  app = QApplication(sys.argv)
  MainWindow = QMainWindow()

  ui = Ui_MainWindow()
  ui.setupUi(MainWindow)

MainWindow.show()
sys.exit(app.exec_())

如果我沒記錯的話,只需在passtt函數中將它作為aa參數傳遞即可。 但首先,您需要更改信號:

self.comboADV.activated.connect(self.passtt) -> self.comboADV.activated[str].connect(self.passtt)

然后:

def passtt(self,item):
    print(item)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM