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_())
用了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
文本框上。
!!!错误代码
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'
是等同的。