2016-07-02 3 views
0

사용자가 QLineEdit에서 텍스트를 검색하면 해당 텍스트를 인쇄합니다. QLineEdit에는 QCompleter가 있습니다.QLineEdit-QCompleter 상단을 자동으로 만드는 방법

우리가 알고 있듯이 Texttext은 같지 않지만 사용자와 동일합니다. 따라서 사용자가 Text 또는 text을 입력하기 시작하면 QLineEdit에서 실시간으로 TEXT으로 변경하고 싶습니다. 따라서 사용자가 문자를 입력 할 때마다 QCompleter-QLineEdit에서 대문자로 만들려고합니다. 어떻게해야합니까? 나는이 atm있다; 내가 h를 누르면

from PyQt5.QtWidgets import QApplication,QPushButton,QMainWindow,QLabel,QLineEdit,QCompleter 
from PyQt5 import QtCore, QtWidgets, QtGui 
from PyQt5.QtCore import QPoint 
import sys 

class cssden(QMainWindow): 
    def __init__(self): 
     super().__init__() 
     self.mwidget = QMainWindow(self) 
     self.setWindowFlags(QtCore.Qt.FramelessWindowHint) 

     #size 
     self.setFixedSize(600,400) 

     #LINE EDIT QCOMPLETER 
     self.label = QLineEdit(self) 
     self.label.setGeometry(100,100,300,30) 
     self.label.setStyleSheet("color: red;" 
           "font: bold 15pt 'Arial';") 

     self.t = ["Hello","hi","Hey"] 
     self.label.setCompleter(QCompleter(self.t, self)) 

     #BUTTON 
     self.buton = QPushButton(self) 
     self.buton.setText("Click") 
     self.buton.setGeometry(200,140,90,50) 

     self.buton.clicked.connect(self.hangiButon) 

     #SET LABEL 
     self.set_label = QLabel(self) 
     self.set_label.setGeometry(100,300,900,100) 
     self.set_label.setStyleSheet("color: green;" 
            "font: bold 18pt 'Times New Roman';") 
     self.show() 


    def hangiButon(self): 
     print(self.label.text(), self.t.index(self.label.text())+1) 
     self.set_label.setText("Pressed to --> {}.".format(self.label.text().rstrip())) 

    def mousePressEvent(self, event): 
     self.oldPos = event.globalPos() 

    def mouseMoveEvent(self, event): 
     delta = QPoint (event.globalPos() - self.oldPos) 
     self.move(self.x() + delta.x(), self.y() + delta.y()) 
     self.oldPos = event.globalPos() 

app = QApplication(sys.argv) 
app.setStyleSheet("QMainWindow{background-color: rgb(30,30,30);border: 2px solid rgb(20,20,20)}") 

ex = cssden() 
sys.exit(app.exec_()) 

그래서 나는뿐만 아니라 hi, 모든 단어를보고 싶어하고 나는 즉시 그 h을 변경하고 싶습니다. 그러나 방법을 알아낼 수 없었다.

답변

2

QCompleter 위젯 단순히 QtCore.Qt.CaseSensitive/또는 QtCore.Qt.CaseInsensitive 걸리는 setCaseSensitivity 속성이 1 또는 0 (docs).

The Qt documentaion입니다. "기본값은 Qt :: CaseSensitive입니다."

속성을 변경하면 대소 문자를 구별하는 매칭 :

def to_upper(self, txt): 
    self.label.setText(txt.upper()) 

다음 연결할 수 있습니다

self.t = ["Hello","hi","Hey"] 
my_completer = QCompleter(self.t, self) 
my_completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) 
# my_completer.setCaseSensitivity(0) 
self.label.setCompleter(my_completer) 

당신이 텍스트를 변경하는 방법을 추가 할 수 대문자로 사용자 입력을 변경하려면를 self.label.textChanged과 같은 이벤트 :

self.label.textChanged.connect(self.to_upper) 

정리하기 :

from PyQt5.QtWidgets import QApplication,QPushButton,QMainWindow,QLabel,QLineEdit,QCompleter 
from PyQt5 import QtCore, QtWidgets, QtGui 
from PyQt5.QtCore import QPoint 
import sys 

class cssden(QMainWindow): 
    def __init__(self): 
     super().__init__() 
     self.mwidget = QMainWindow(self) 
     self.setWindowFlags(QtCore.Qt.FramelessWindowHint) 

     #size 
     self.setFixedSize(600,400) 

     #LINE EDIT QCOMPLETER 
     self.label = QLineEdit(self) 
     self.label.setGeometry(100,100,300,30) 
     self.label.setStyleSheet("color: red;" 
           "font: bold 15pt 'Arial';") 

     self.label.textChanged.connect(self.to_upper) 

     self.t = ["Hello","hi","Hey"] 
     my_completer = QCompleter(self.t, self) 
     #my_completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) 
     my_completer.setCaseSensitivity(0) 
     self.label.setCompleter(my_completer) 

     #BUTTON 
     self.buton = QPushButton(self) 
     self.buton.setText("Click") 
     self.buton.setGeometry(200,140,90,50) 

     self.buton.clicked.connect(self.hangiButon) 

     #SET LABEL 
     self.set_label = QLabel(self) 
     self.set_label.setGeometry(100,300,900,100) 
     self.set_label.setStyleSheet("color: green;" 
            "font: bold 18pt 'Times New Roman';") 
     self.show() 

    def to_upper(self, txt): 
     self.label.setText(txt.upper()) 

    def hangiButon(self): 
     print(self.label.text(), self.t.index(self.label.text())+1) 
     self.set_label.setText("Pressed to --> {}.".format(self.label.text().rstrip())) 

    def mousePressEvent(self, event): 
     self.oldPos = event.globalPos() 

    def mouseMoveEvent(self, event): 
     delta = QPoint (event.globalPos() - self.oldPos) 
     self.move(self.x() + delta.x(), self.y() + delta.y()) 
     self.oldPos = event.globalPos() 

app = QApplication(sys.argv) 
app.setStyleSheet("QMainWindow{background-color: rgb(30,30,30);border: 2px solid rgb(20,20,20)}") 

ex = cssden() 
sys.exit(app.exec_()) 
관련 문제