如果滑块的值为 1,在 pyqt 中如何更改 QPlainTextEdit() 中的文本,如果值为 0,则不更改? [英] How in pyqt change text in QPlainTextEdit() if slider's value is 1, and don't change if the value is 0?

查看:39
本文介绍了如果滑块的值为 1,在 pyqt 中如何更改 QPlainTextEdit() 中的文本,如果值为 0,则不更改?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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)

当我将滑块设置为第一个刻度时,文本会反转.但是当我将它设置为开头时,文本仍然颠倒了.我知道问题在于,一旦文本更改,它就会设置文本编辑行.任何想法如何解决它?示例 1示例 2

When I set slider to the first tick, the text gets reversed. But when I set it to the begining the text is still reversed. I know that the problem is that once the text was changed it sets the text edit line. Any ideas how to solve it ? Example1, Example2

推荐答案

这里有一个示例,说明如何查看滑块的值,并在值达到特定值时修改 QPlainText.

Here is an example of how to watch the value of the slider, and modify a QPlainText when the value is at certain values.

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_())

当发出 QSlider.valueChanged 信号时,新值会随之携带.因此,在我的插槽 Window.change_value(self, value) 中,value 位置参数将始终包含新的 QSlider 值;这允许您对其进行测试.

When the QSlider.valueChanged signal is emitted, the new value is carried with it. So in my slot Window.change_value(self, value) the value positional argument will always contain the new QSlider value; which allows you to test against it.

这篇关于如果滑块的值为 1,在 pyqt 中如何更改 QPlainTextEdit() 中的文本,如果值为 0,则不更改?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆