def show_raw_data(self): self.notebook.select(self.raw_frame)
def show_formatted_report(self): self.notebook.select(self.report_frame) qrp file viewer
def display_report_data(self): """Display extracted data in tree view""" # Clear existing items for item in self.tree.get_children(): self.tree.delete(item) if not self.report_data: return # Get all unique keys all_keys = set() for row in self.report_data: all_keys.update(row.keys()) columns = list(all_keys) # Configure tree columns self.tree["columns"] = columns for col in columns: self.tree.heading(col, text=col, command=lambda c=col: self.sort_column(c, False)) self.tree.column(col, width=150, minwidth=50) # Add data for row in self.report_data: values = [row.get(col, "") for col in columns] self.tree.insert("", tk.END, values=values) def show_raw_data(self): self
def extract_report_data(self, content): """Extract structured data from QRP content""" self.report_data = [] # Look for common patterns in QRP files lines = content.split('\n') # Try to find tabular data data_started = False headers = [] for line in lines: if '|' in line or '\t' in line: # Parse delimited data if '|' in line: parts = line.split('|') else: parts = line.split('\t') parts = [p.strip() for p in parts if p.strip()] if parts: if not headers and all(p.isalpha() or ' ' in p for p in parts): headers = parts else: if headers: row_data = dict(zip(headers[:len(parts)], parts)) self.report_data.append(row_data) else: self.report_data.append(f"Column_i": p for i, p in enumerate(parts)) if not self.report_data and lines: # If no structured data found, treat each line as a record for i, line in enumerate(lines[:100]): # Limit to first 100 lines if line.strip(): self.report_data.append(f"Line_i+1": line.strip()) command=lambda c=col: self.sort_column(c
messagebox.showinfo("About", about_text) def main(): root = tk.Tk() app = QRPViewer(root) root.mainloop()
for qrp_file in qrp_files: analyzer = QRPAnalyzer(qrp_file) results.append(analyzer.analyze()) return results Create a requirements.txt file: