编程思路是采用浏览窗口选择Word模版文件,获取文件绝对路径并赋值给全局变量,供后续程序调用,但并未成功。
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QSettings
import os.path
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
# 创建主窗口
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 400)
MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint) # 不允许调整窗口大小
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
# 创建标签1,模版位置
self.label_1 = QtWidgets.QLabel(self.centralwidget)
self.label_1.setGeometry(QtCore.QRect(10, 20, 61, 25))
self.label_1.setObjectName("label_1")
# 创建单行文本框,用来显示选择的文件
self.lineEdit_1 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_1.setGeometry(QtCore.QRect(90, 20, 550, 25))
self.lineEdit_1.setObjectName("lineEdit_1")
# 创建按钮1,选择Word模版文件
self.pushButton_1 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_1.setGeometry(QtCore.QRect(670, 20, 90, 25))
self.pushButton_1.setObjectName("pushButton_1")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
# 为按钮clicked信号绑定槽函数
self.pushButton_1.clicked.connect(self.bindList_1)
# 定义按钮1槽函数
mbmc='模版名称'
def bindList_1(self):
from PyQt5.QtWidgets import QFileDialog
filename ,filetype= QFileDialog.getOpenFileName(None, '选择文件','C:/Users/LXF/Desktop/临时文件', 'Word文件(*.docx)')
if len(filename) > 0:
self.lineEdit_1.setText(filename) # 将选择的文件显示在列表中
global mbmc
mbmc= filename
print(mbmc)
print(mbmc)
# 设置各控件的默认名称
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "生成桥梁工点报告"))
self.pushButton_1.setText(_translate("MainWindow", "浏览"))
self.label_1.setText(_translate("MainWindow", "模版位置:"))
if name == 'main':
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow() # 创建窗体对象
ui = Ui_MainWindow() # 创建PyQt5设计的窗体对象
ui.setupUi(MainWindow) # 调用PyQt5窗体的方法对窗体对象进行初始化设置
MainWindow.show() # 显示窗体
sys.exit(app.exec_()) # 程序关闭时退出进程
C:\Anaconda3\python.exe F:/pythonProject/GLProject/test.py
模版名称
C:/Users/LXF/Desktop/临时文件/合同模板.docx
进程已结束,退出代码0
无
通过调用槽函数修改全局变量“mbmc”的值,以便后续程序调用。
直接用类属性取代全局变量就行了
你mbmc='模版名称' 是写在class Ui_MainWindow(object):类里面的, 不是全局变量
mbmc='模版名称' 要写在class Ui_MainWindow(object):类之外, 才是全局变量
你题目的解答代码如下:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QSettings
import os.path
mbmc='模版名称' #要写在class Ui_MainWindow(object):类之外, 才是全局变量
print(mbmc)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
# 创建主窗口
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 400)
MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint) # 不允许调整窗口大小
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
# 创建标签1,模版位置
self.label_1 = QtWidgets.QLabel(self.centralwidget)
self.label_1.setGeometry(QtCore.QRect(10, 20, 61, 25))
self.label_1.setObjectName("label_1")
# 创建单行文本框,用来显示选择的文件
self.lineEdit_1 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_1.setGeometry(QtCore.QRect(90, 20, 550, 25))
self.lineEdit_1.setObjectName("lineEdit_1")
# 创建按钮1,选择Word模版文件
self.pushButton_1 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_1.setGeometry(QtCore.QRect(670, 20, 90, 25))
self.pushButton_1.setObjectName("pushButton_1")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
# 为按钮clicked信号绑定槽函数
self.pushButton_1.clicked.connect(self.bindList_1)
# 定义按钮1槽函数
def bindList_1(self):
from PyQt5.QtWidgets import QFileDialog
filename ,filetype= QFileDialog.getOpenFileName(None, '选择文件','C:/Users/LXF/Desktop/临时文件', 'Word文件(*.docx)')
if len(filename) > 0:
self.lineEdit_1.setText(filename) # 将选择的文件显示在列表中
global mbmc
mbmc= filename
print(mbmc)
# 设置各控件的默认名称
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "生成桥梁工点报告"))
self.pushButton_1.setText(_translate("MainWindow", "浏览"))
self.label_1.setText(_translate("MainWindow", "模版位置:"))
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
代码复制的太乱了,汗,试了试,可以正常使用槽函数修改全局变量
题主确定下这个条件是否正常吧
在类外面也声明一下global