pyqt5获取文本框里输入的值

pyqt5怎么输出随机数到文本框上啊

我写的一点击按钮就停止工作了

import  sys
import random
import time

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_mainWindow(object):
    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.resize(418, 187)
        self.centralwidget = QtWidgets.QWidget(mainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(170, 100, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(100, 50, 221, 31))
        self.textBrowser.setObjectName("textBrowser")
        mainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(mainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 418, 23))
        self.menubar.setObjectName("menubar")
        mainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(mainWindow)
        self.statusbar.setObjectName("statusbar")
        mainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, mainWindow):
        _translate = QtCore.QCoreApplication.translate
        mainWindow.setWindowTitle(_translate("mainWindow", "抽奖"))
        self.pushButton.setText(_translate("mainWindow", "开奖"))
        self.pushButton.clicked.connect(self.clickButton)

    def clickButton(self):
        b=[]
        for i in range(0, 7):
            a = random.randint(0, 9)
            b.append(a)
        self.textBrowser.append("开奖结果:",b)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui=Ui_mainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

基于Monster 组和GPT的调写:

用了self.textBrowser.append("开奖结果:", b)来尝试输出开奖结果到textBrowser文本框上。然而,append()方法只接受一个字符串作为参数,而不能直接传递一个列表。你可以将列表转换为字符串,并使用join()方法将其连接起来,然后将结果作为参数传递给append()方法。

以下是修改后的代码示例:

import sys
import random
import time

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_mainWindow(object):
    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.resize(418, 187)
        self.centralwidget = QtWidgets.QWidget(mainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(170, 100, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(100, 50, 221, 31))
        self.textBrowser.setObjectName("textBrowser")
        mainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(mainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 418, 23))
        self.menubar.setObjectName("menubar")
        mainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(mainWindow)
        self.statusbar.setObjectName("statusbar")
        mainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, mainWindow):
        _translate = QtCore.QCoreApplication.translate
        mainWindow.setWindowTitle(_translate("mainWindow", "抽奖"))
        self.pushButton.setText(_translate("mainWindow", "开奖"))
        self.pushButton.clicked.connect(self.clickButton)

    def clickButton(self):
        b = []
        for i in range(0, 7):
            a = random.randint(0, 9)
            b.append(str(a))
        result = "开奖结果:" + " ".join(b)
        self.textBrowser.append(result)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_mainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

在这个修改后的代码中,我将生成的随机数转换为字符串并用空格连接起来。然后,我将结果添加到result变量中,并将result传递给append()方法来输出到textBrowser文本框上。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7442196
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:使用 PyQT5 来做一个简易版库存管理系统(一)
  • 除此之外, 这篇博客: PyQt5随笔:PyQt5 程序在开机自启动时读取文件出错导致崩溃解决办法中的 2.错误与正确代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    !!!错误代码

    log_text = '错误代码'
            #把壁纸切换记录写入log.txt 文件
    with open('logtext.txt', 'a+', encoding='utf-8') as log_file:
        log_file.write(log_text)  #追加模式写入日志
    

    日志文件 logtext.txt 是建立在程序目录下的,在测试时使用相对地址 'logtext.txt'并没有出错。但这没有经历过开机自启动测试。导致我误以为成功了。。。。


    👍👍👍 正确的代码

    path = os.path.abspath(sys.argv[0])  #获取运行的主程序绝对路径 如我的返回path= r'D:\code_python\Pui2\test_0625.py'
    path_dir, path_filename = os.path.split(path)  # 把文件路径分割为文件夹路径和文件名称
    path = path_dir + '\\logtext.txt'  #合并路径,得到一个完整的日志文件路径 如我的变成:path= r'D:\code_python\Pui2\logtext.txt'
    
    with open(path, 'a+', encoding='utf-8') as log_file:
    	log_file.write(log_text)
    

    如果文件需在自启动时进行读写操作,一定要使用绝对路径,要不然出错。其他时候读写文件可以使用相对路径地址。

    :在Windows里 r'D:\code_python\Pui2\logtext.txt''D:\\code_python\\Pui2\\logtext.txt'是等同的。

  • 您还可以看一下 周华健老师的Python PyQt 全屏图片播放器项目课程中的 播放器主界面[2]小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^