Raw Image Data Viewer using tkinter - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: General (https://python-forum.io/forum-1.html) +--- Forum: Code sharing (https://python-forum.io/forum-5.html) +--- Thread: Raw Image Data Viewer using tkinter (/thread-34838.html) |
Raw Image Data Viewer using tkinter - menator01 - Sep-06-2021 #! /usr/bin/env python3 from skimage.io import imread import tkinter as tk from tkinter import filedialog from os import sys import argparse parser = argparse.ArgumentParser() parser.add_argument('--minutes', type=int, help='--minutes n to add minutes. Leave blank to stay open.') args = parser.parse_args() minutes = None if args.minutes: minutes = args.minutes*60000 else: pass root = tk.Tk() root.geometry('1020x600+250+250') root.title('Raw Image Viewer') root['padx'] = 5 root['pady'] = 5 root['padx'] = 20 root.columnconfigure(0, weight=1) root.rowconfigure(0, weight=1) def get_image(): file = filedialog.askopenfilename(title='Image File') img = tk.PhotoImage(file=file) img.back = img img_label = tk.Label(emptyframe) img_label['image'] = img img_label.grid(column=0, row=0, sticky='news') col = 0 row = 0 imag = imread(file) listbox.delete(0, tk.END) for data in imag: listbox.insert(tk.END, data) container = tk.Frame(root) container.grid(column=0, row=0, sticky='news') container.grid_columnconfigure(0, weight=1) container.grid_columnconfigure(1, weight=3) container.grid_rowconfigure(1, weight=3) border = tk.Frame(container) border['highlightcolor'] = 'lightgray' border['highlightbackground'] = 'lightgray' border['highlightthickness'] = 1 border.grid(column=0, row=0, sticky='news', padx=2, pady=2) label = tk.Label(border, text='Choose an Image') label.grid(column=0, row=0, sticky='news') btnborder = tk.Frame(container) btnborder['highlightcolor'] = 'lightgray' btnborder['highlightbackground'] = 'lightgray' btnborder['highlightthickness'] = 1 btnborder.grid(column=1, row=0, sticky='news', padx=1, pady=2) btnborder.grid_columnconfigure(0, weight=3) btn = tk.Button(btnborder, text='Get Image', command=get_image) btn.grid(column=0, row=0, sticky='n') emptyframe = tk.Frame(container) emptyframe['highlightthickness'] = 1 emptyframe['highlightcolor'] = 'lightgray' emptyframe['highlightbackground'] = 'lightgray' emptyframe.grid(column=0, row=1, sticky='news', padx=2) emptyframe.grid_rowconfigure(1, weight=3) emptyframe.grid_columnconfigure(0, weight=3) spacer = tk.Frame(container, bg='white', border=1) spacer['highlightbackground'] = 'lightgray' spacer['highlightcolor'] = 'lightgray' spacer['highlightthickness'] = 1 spacer.grid(column=1, row=1, sticky='news') spacer.grid_rowconfigure(0, weight=3) spacer.grid_columnconfigure(0, weight=3) boxframe = tk.Frame(spacer, bg='white', border=2) boxframe['highlightcolor'] = 'white' boxframe['highlightbackground'] = 'white' boxframe['highlightthickness'] = 2 boxframe.grid(column=0, row=0, sticky='news', padx=2, pady=2) boxframe.grid_rowconfigure(0, weight=3) horizontalbar = tk.Scrollbar(spacer, orient='horizontal') horizontalbar.grid(column=0, row=1, sticky='ew') verticalbar = tk.Scrollbar(spacer, orient='vertical') verticalbar.grid(column=1, row=0, sticky='ns') listbox = tk.Listbox(boxframe, relief='flat') listbox['highlightthickness'] = 0 listbox.pack(expand=True, fill='both') listbox['xscrollcommand'] = horizontalbar.set listbox['yscrollcommand'] = verticalbar.set horizontalbar.configure(command=listbox.xview) verticalbar.configure(command=listbox.yview) root.bind('<q>', sys.exit) root.bind('<Escape>', sys.exit) if minutes: root.after(minutes, sys.exit) root.mainloop() RE: Raw Image Data Viewer using tkinter - menator01 - Sep-07-2021 Pyside2 version. Image formats are png, jpg, ico, and bmp. The jpg images seem to take a few sewconds to display. Maybe because the files are large? #! /usr/bin/env python3 import sys from skimage.io import imread from PySide2.QtWidgets import QApplication, QMainWindow, QWidget, \ QLabel, QPushButton, QVBoxLayout, QHBoxLayout, QFrame, QFileDialog, \ QListView, QListWidget from PySide2.QtGui import QCursor, QPixmap from PySide2.QtCore import Qt class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.setWindowTitle("Raw Image Viewer") self.setFixedWidth(800) main_layout = QVBoxLayout() title_layout = QHBoxLayout() layout2 = QHBoxLayout() layout3 = QHBoxLayout() main_layout.addLayout(title_layout) main_layout.addLayout(layout2) main_layout.addLayout(layout3) title = QLabel('Raw Image Viewer') title.setAlignment(Qt.AlignVCenter | Qt.AlignHCenter) title.setFrameStyle(QFrame.StyledPanel) title.setStyleSheet('font-weight: bold; font-size: 30pt; padding: 10px; \ color: rgb(100, 100, 200); background-color: rgb(198, 190, 200);') text_col = QLabel('Choose an image') text_col.setFrameStyle(QFrame.StyledPanel) text_col.setStyleSheet('font-size: 10pt; color: navy; padding: 5px; \ background-color: rgb(198, 190, 200); text-decoration: underline;') btn = QPushButton('Get Image') btn.setStyleSheet('font-size: 12pt; padding: 5px; \ color: steelblue; font-weight: bold;') btn.setAutoFillBackground(True) btn.setCursor(QCursor(Qt.PointingHandCursor)) btn.clicked.connect(self.get_file) self.img_panel = QLabel() self.img_panel.setFrameStyle(QFrame.StyledPanel) self.img_panel.setScaledContents(True) self.img_panel.setFixedWidth(200) self.img_panel.setFixedHeight(200) img_data = QLabel() img_data.setFrameStyle(QFrame.StyledPanel) self.data = QListWidget() title_layout.addWidget(title) layout2.addWidget(text_col) layout2.addWidget(btn) layout3.addWidget(self.img_panel) layout3.addWidget(img_data) layout3.addWidget(self.data) widget = QWidget() widget.setLayout(main_layout) self.setCentralWidget(widget) def get_file(self): file = QFileDialog.getOpenFileName(self, 'Open File', '.', \ 'Image Files (*.png *.jpg *.bmp *.ico)') pixmap = QPixmap(file[0]) self.img_panel.setPixmap(pixmap) self.data.clear() for lines in imread(file[0]): for line in lines: self.data.addItem(f'{line}') app = QApplication(sys.argv) window = MainWindow() window.show() app.exec_() |