TypeError: может только конкатенировать str (не "int") в str

Я написал программу с интерфейсом, которая будет выводить случайное число, но при запуске выводится ошибка которую я не могу решить.
Делал интерфейс через Qt Designer.

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from randomgui import *
import random


class MyWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.b_randomed.clicked.connect(self.random_value())

    def random_value(self):
        v_min = self.ui.t_min.toPlainText() # Get min value
        v_max = self.ui.t_max.toPlainText() # Get max value
        randomintresult = random.randint(v_min, v_max) # random int
        self.ui.label.setText(randomintresult) # Text output


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    myapp = MyWin()
    myapp.show()
    sys.exit(app.exec_())

randomgui.py


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(160, 130)
        MainWindow.setMinimumSize(QtCore.QSize(160, 130))
        MainWindow.setMaximumSize(QtCore.QSize(160, 130))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.b_randomed = QtWidgets.QPushButton(self.centralwidget)
        self.b_randomed.setGeometry(QtCore.QRect(0, 92, 161, 41))
        self.b_randomed.setObjectName("b_randomed")
        self.t_min = QtWidgets.QTextEdit(self.centralwidget)
        self.t_min.setGeometry(QtCore.QRect(0, 64, 81, 31))
        self.t_min.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.t_min.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.t_min.setObjectName("t_min")
        self.t_max = QtWidgets.QTextEdit(self.centralwidget)
        self.t_max.setGeometry(QtCore.QRect(80, 64, 80, 31))
        self.t_max.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.t_max.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.t_max.setObjectName("t_max")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(-9, -4, 171, 71))
        font = QtGui.QFont()
        font.setFamily("Microsoft YaHei UI")
        font.setPointSize(20)
        self.label.setFont(font)
        self.label.setStyleSheet("background-color: rgb(122, 122, 122);")
        self.label.setIndent(10)
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.b_randomed.setText(_translate("MainWindow", "Randomed"))
        self.t_min.setPlaceholderText(_translate("MainWindow", "Min"))
        self.t_max.setPlaceholderText(_translate("MainWindow", "Max"))
        self.label.setText(_translate("MainWindow", "0"))

error:

TypeError: can only concatenate str (not "int") to str


Ответы (2 шт):

Автор решения: S. Nick

Я отметил для вас ошибки. которые вам надо исправить. Если что-то не понятно - спросите.

import sys
import random
from PyQt5 import QtCore, QtGui, QtWidgets

#from randomgui import *
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(160, 130)
        MainWindow.setMinimumSize(QtCore.QSize(160, 130))
        MainWindow.setMaximumSize(QtCore.QSize(160, 130))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        
        self.b_randomed = QtWidgets.QPushButton(self.centralwidget)
        self.b_randomed.setGeometry(QtCore.QRect(0, 92, 161, 41))
        self.b_randomed.setObjectName("b_randomed")
        
        self.t_min = QtWidgets.QTextEdit(self.centralwidget)
        self.t_min.setGeometry(QtCore.QRect(0, 64, 81, 31))
        self.t_min.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.t_min.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.t_min.setObjectName("t_min")
        
        self.t_max = QtWidgets.QTextEdit(self.centralwidget)
        self.t_max.setGeometry(QtCore.QRect(80, 64, 80, 31))
        self.t_max.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.t_max.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.t_max.setObjectName("t_max")
        
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(-9, -4, 171, 71))
        font = QtGui.QFont()
        font.setFamily("Microsoft YaHei UI")
        font.setPointSize(20)
        self.label.setFont(font)
        self.label.setStyleSheet("background-color: rgb(122, 122, 122);")
        self.label.setIndent(10)
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.b_randomed.setText(_translate("MainWindow", "Randomed"))
        self.t_min.setPlaceholderText(_translate("MainWindow", "Min"))
        self.t_max.setPlaceholderText(_translate("MainWindow", "Max"))
        self.label.setText(_translate("MainWindow", "0"))


class MyWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
#        QtWidgets.QWidget.__init__(self, parent)
        super(MyWin, self).__init__(parent)
        
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

# ---------------------------------------------------------> vv <---- ??? 
#        self.ui.b_randomed.clicked.connect(self.random_value())
        self.ui.b_randomed.clicked.connect(self.random_value)

    def random_value(self):
        v_min = self.ui.t_min.toPlainText()                     # Get min value
        v_max = self.ui.t_max.toPlainText()                     # Get max value
        
#        randomintresult = random.randint(v_min, v_max)          # random int
# -------------------------------------> vvvv     v  vvvv     v <---- +++ 
        randomintresult = random.randint(int(v_min), int(v_max))         
        
#        self.ui.label.setText(randomintresult)                  # Text output
# ------------------> vvvvvv <----------------------------------- +++ 
        self.ui.label.setNum(randomintresult)                  


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    myapp = MyWin()
    myapp.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка
Автор решения: ganz
result='string'+123
#TypeError: can only concatenate str (not "int") to str
result='string'+'123' #ok
result='string'+str(123) #ok

то есть нужно каким либо образом изменить тип числа на строковой. Эта ошибка происходит где-то при чтении-изменении данных в интерфейсе, точнее у вас куча ошибок по несовместимости типов

class MyWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.b_randomed.clicked.connect(self.random_value) #тут задавался результат выполнения функции, а не функция

    def random_value(self):
        v_min = self.ui.t_min.toPlainText() # Get min value
        v_max = self.ui.t_max.toPlainText() # Get max value
        if v_min=='':
            #устанавливаем значения по умолчанию тк невозможно преобразовать пустую строку в число
            v_min, v_max = 0, 10
        randomintresult = random.randint(int(v_min), int(v_max)) # v_min была строкой требовалось число
        self.ui.label.setText(str(randomintresult) # требуется строка а не число

исправленая версия с примечаниями

→ Ссылка