我的界面逻辑描述,通过button按钮选择一个文件夹地址和一个模板文件地址(代码中用变量file5和file6表示),然后通过combobox控件选择执行的脚本,需要给脚本传递两个button获取的地址信息,然后执行脚本。现在的问题是文件和文件夹地址无法传递给脚本。请问该如何修改?
以下是PYQT5部分代码
self.retranslateUi(BladeDataSummary)
self.liulan_pushButton_3.clicked.connect(self.openfile_moban)
self.liulan_pushButton_2.clicked.connect(self.openfile)
self.renwu_comboBox.activated[str].connect(self.xuanzerenwu)
self.jisuan_pushButton.clicked.connect(self.OpenClick_jisuan)
读取到文件夹和文件模板地址的代码
def openfile(self):
if self.piciButton.isChecked()== True:
openfolder_name = QFileDialog.getExistingDirectory(self,"选取文件夹",'C:/')
self.TXTlineEdit.setText(openfolder_name)
self.foldername = openfolder_name
print(u"选中文件夹:", self.foldername)
if self.danjianButton.isChecked()== True:
openfile_name, ok = QFileDialog.getOpenFileName(self,
"打开",
"",
"All Files ();;文本文件 (.txt);;rtf 格式 (*.rtf)",
'QFileDialog.DontUseNativeDialog')
if ok:
self.TXTlineEdit.setText(openfile_name)
self.filename = openfile_name
print(u"选中文件:", self.filename)
def openfile_moban(self):
openfile_name_moban,ok = QFileDialog.getOpenFileName(self,"打开","","All Files (*);;Excel文件 (*.xlsx)",'QFileDialog.DontUseNativeDialog')
if ok:
self.TXTlineEdit_2.setText(openfile_name_moban)
self.filename_moban = openfile_name_moban
print(u"选中文件:", self.filename_moban)
conbobax控件槽函数的代码
def OpenClick_jisuan(self):
if self.renwu == 'Extract_max_and_min':
if self.foldername is not None:
max_and_min(file5=self.foldername,file6=self.filename_moban)
执行的脚本文件(111.py):
import openpyxl
from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
from win32com.client import Dispatch
import os
def max_and_min(file5=None,file6=None):
if file5==None:
wb = openpyxl.load_workbook(file6) #模板
ws = wb.active
if file6==None:
fn = file5 #报告文件夹
# fn='C://Users//111//Desktop//2108'
# path = fn
# path=r'C://Users//111//Desktop//2108'
files_list = os.listdir(file5)
word = Dispatch('Word.Application')
# word = DispatchEx('Word.Application')
word.Visible = 0
word.DisplayAlerts = 0
for file_name in files_list:
if '.RTF' in file_name:
path1 = fn + '\\' + file_name
# print(path1)
new_id = []
id = file_name[-15:-4]
new_id.append(id)
path2 = path1,'r'
doc = word.Documents.Open(FileName=path2, Encoding='gbk')
# print(doc)
new_line = []
lines = []
new_data = []
for para in doc.paragraphs:
para = para
new_line.append(para.Range.text)
for line in new_line:
line = line.rstrip('\n')
a_splited = line.split()
lines.append(a_splited)
for i in lines:
if len(i) == 0:
continue
if i[0] == 'M':
if len(i) == 5:
new_data.append(float(i[1]))
new_data.append(float(i[2]))
doc.Close()
id_dev = [(new_id[0])]
# print(id_dev)
hebing = id_dev + new_data
print(hebing)
ws.column_dimensions['A'].width = 15
nrows = ws.max_row # 获得行数
ncols = ws.max_column # 获得列数
for i in range(nrows):
for j in range(ncols):
ws.cell(row=i + 1, column=j + 1).alignment = Alignment(horizontal='center',
vertical='center') # 全部单元格数字居中
wb.save(fn + 'max and min' + '.xlsx')
word.Quit()
把 max_and_min(file5=self.foldername,file6=self.filename_moban) 改成
111.max_and_min(fself.foldername,self.filename_moban) 试试