2016-06-04 2 views
-2
message = QtGui.QPlainTextEdit() 
slider = QtGui.QSlider() 
def slider_func(): 
    if slider.value() == 0: 
     '''what to write here ?''' 

    if slider.value() == 1: 
     m = str(message.toPlainText()) 
     translated = '' 
     i = len(m) - 1 
     while i >= 0: 
      translated = translated + m[i] 
      i = i - 1 
     message.setPlainText(translated) 
QtCore.QObject.connect(slider, QtCore.SIGNAL('valueChanged(int)'), 
        slider_func) 

Wenn ich den Schieberegler auf den ersten Haken setze, wird der Text umgekehrt. Aber wenn ich es auf den Anfang setze, ist der Text immer noch umgekehrt. Ich weiß, dass das Problem darin besteht, dass sobald der Text geändert wurde, die Textbearbeitungszeile gesetzt wird. Irgendwelche Ideen, wie man es löst? Example1, Example2Wie in Pyqt Text in QPlainTextEdit() ändern, wenn Schieberegler Wert 1 ist, und nicht ändern, wenn der Wert 0 ist?

+0

Sind Sie wirklich ein Programmierer? : | – Mehdi1902

Antwort

0

Hier ist ein Beispiel, wie der Wert des Schiebereglers angezeigt wird, und ändern Sie eine QPlainText, wenn der Wert auf bestimmte Werte ist.

from PyQt4.QtGui import * 
from PyQt4.Qt import * 
import sys 


class Window(QWidget): 
    def __init__(self, *args, **kwargs): 
     super(Window, self).__init__(*args, **kwargs) 

     layout = QVBoxLayout() 
     self.setLayout(layout) 

     self.text = "Please enter some text" 
     self.edit = QPlainTextEdit(self.text) 
     layout.addWidget(self.edit) 

     slider = QSlider(Qt.Horizontal) 
     layout.addWidget(slider) 
     slider.valueChanged.connect(self.change_value) 

    def change_value(self, value): 
     if value == 0: 
      self.edit.setPlainText(self.text) 
     elif value == 1: 
      self.edit.setPlainText(self.text[::-1]) 
     elif value > 1: 
      self.edit.setPlainText("Slider value is above 1, value: {0}".format(value)) 


app = QApplication(sys.argv) 
win = Window() 
win.show() 
sys.exit(app.exec_()) 

Wenn das QSlider.valueChanged Signal ausgesendet wird, wird der neue Wert mit ihm getragen. Also in meinem Steckplatz Window.change_value(self, value) das value Positionsargument enthält immer den neuen Wert; was es Ihnen erlaubt, dagegen zu testen.

+0

aber das Problem ist, wenn ich Schieberegler Position ändern und setze es zurück auf 0, bekomme ich "Schieberegler Wert derzeit bei 0" "statt aller ersten Text" Slider-Wert bei 0 initialisiert ", wissen Sie nicht, wie Sie es beheben? –

+0

Sie können den Text einfach so setzen, wie Sie möchten, dass er 0 ist. Sie könnten einfach die Zeile 'self.edit.setPlainText (" Slider value currently at 0 ")' in 'self.edit.setPlainText (" Slider Wert initialisiert auf 0 "). Welche Zeichenfolge Sie auch innerhalb des 'setPlainText (...)' haben, wird der Text sein, zu dem der Text geändert wird. – Abstracted

+0

Das ist nicht, was ich meine, versuchen Sie, Schieberegler Wert auf 1 und wieder auf 0 und sehen, was passiert [Code] (http://pastebin.com/Mkdi6FJK). Wenn der Schieberegler auf der Position 0 steht, ist der Text derselbe wie auf der Position 1 –

Verwandte Themen