Как центрировать текст в списке QComboBox?

Я считаю, что ваша проблема может заключаться в том, что number_won_games и number_all_games являются целыми числами и, следовательно, деление всегда будет 0 и, следовательно, 0, умноженное на 100, будет равно 0, возможно, создается впечатление, что ничего не обновлено.

Вы можете попробовать выполнить casting number_won_games и number_all_games в REAL, например используя: -

UPDATE Table 
SET success = (CAST(number_won_games AS REAL) / CAST(number_all_games AS REAL)) * 100
WHERE name_game = 'some name';

Пояснительный пример

Учитывая следующее: -

DROP TABLE IF EXISTS t;
CREATE TABLE IF NOT EXISTS t (name_game TEXT, number_won_games INTEGER, number_all_games INTEGER, success REAL);
INSERT INTO t VALUES
    ('game1',10,20,0.12345678);
UPDATE t SET success = (number_won_games / number_all_games) * 100;
SELECT * FROM t;
UPDATE t SET success = (CAST(number_won_games AS REAL) / CAST(number_all_games AS REAL)) * 100;
SELECT * FROM t;
  • Предложение WHERE не требуется, не был включен.

Что вставляет строку с 20 играми, играемыми с 10 вон (таким образом, 50 как показатель успеха) и с успехом, установленным на ненулевое значение (чтобы показать, что первый обновление обновляется), затем

Первое UPDATE в соответствии с вашим примером приводит к: -

Пока второе UPDATE, которое выводит значения в РЕАЛЬНЫЕ результаты в: -

1
задан TomK 19 January 2019 в 00:00
поделиться

1 ответ

Одним из возможных вариантов является использование делегата:

from PyQt4 import QtGui, QtCore

class AlignDelegate(QtGui.QStyledItemDelegate):
    def initStyleOption(self, option, index):
        super(AlignDelegate, self).initStyleOption(option, index)
        option.displayAlignment = QtCore.Qt.AlignCenter

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        layout = QtGui.QVBoxLayout(self)
        self.combo = QtGui.QComboBox()
        delegate = AlignDelegate(self.combo)
        self.combo.setItemDelegate(delegate)
        self.combo.setEditable(True)
        self.combo.lineEdit().setAlignment(QtCore.Qt.AlignCenter)
        self.combo.addItems('One Two Three Four Five'.split())
        layout.addWidget(self.combo)


if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
0
ответ дан eyllanesc 19 January 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: