2016-07-02 7 views
0

私はQLineEditでテキストを検索した場合、テキストを印刷します。 QLineEditにはQCompleterがあります。QLineEdit-QCompleterの上部線を自動的に作成する方法

私たちが知っているように、Texttextは同じではありませんが、ユーザーと同じです。したがって、ユーザがTextまたはtextと入力した場合は、QLineEditでリアルタイムにTEXTに変更したいと考えています。だから、ユーザーが文字を入力するたびにQCompleter-QLineEditで大文字にしたい。これどうやってするの?私はこの気分を持っています。私は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又は単に1または0(docs)かかりsetCaseSensitivity性質を有しています。

The Qt documentaionは、それがと言っています。「デフォルトはQt :: CaseSensitiveです。」テキストを変更する方法を追加することができます大文字にユーザーの入力を変更するには

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) 

は、大文字と小文字を区別しないマッチングにプロパティを変更する

その後、接続することができます
def to_upper(self, txt): 
    self.label.setText(txt.upper()) 

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_()) 
関連する問題