Created
May 13, 2019 21:07
-
-
Save markcam1/916338bfe94f2c3acd1e766dbc3cd968 to your computer and use it in GitHub Desktop.
tkinter gui example with buttons and display screen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import tkinter | |
from tkinter import ttk | |
from tkinter import messagebox | |
from tkinter import Text | |
import logging | |
# internal | |
from app_main import * | |
from data_storage.db_io import VersionDatabase | |
from customer.current_customer import CustomerManager | |
#logging | |
logging.basicConfig(level=logging.DEBUG, | |
format=' %(asctime)s - %(levelname)s - %(message)s') | |
logging.debug('\n\nStart Main GUI') | |
class RdopsTool(ttk.Frame): | |
def __init__(self, parent, *args, **kwargs): | |
ttk.Frame.__init__(self, parent, *args, **kwargs) | |
self.root = parent | |
self.init_gui() | |
def hello_world(self): | |
print('hello main gui') | |
def on_quit(self): | |
"""Exits program.""" | |
quit() | |
def no_customer(self): | |
self.screen.configure(state='normal') | |
self.screen.insert('1.0', 'cannot load; run new customer' + '\n') | |
self.screen.configure(state ='disabled') | |
self.load_cust.configure(state = 'disabled') | |
def get_customer(self): | |
cm = CustomerManager() | |
try: | |
cust_names = cm.export_names() | |
except AssertionError as error: | |
self.no_customer() | |
logging.exception(error) | |
except UnboundLocalError as e: | |
self.no_customer | |
logging.exception(e) | |
else: | |
self.low_name_label['text'] = cust_names[0] | |
self.low_vers_label['text'] = cust_names[1] | |
self.high_name_label['text'] = cust_names[2] | |
self.high_vers_label['text'] = cust_names[3] | |
self.screen.configure(state='normal') | |
self.screen.insert('1.0', 'loaded active customer' + '\n') | |
self.screen.configure(state ='disabled') | |
def delete_customer(self): | |
cm = CustomerManager() | |
cm.clear_data() | |
def get_new_jenkins(self): | |
print('get new customer') | |
am = AppMain() | |
new_jenkins_result = am.jenkins_load() | |
am.unzip_new_jenkins() | |
print(f'new jenkins result: {new_jenkins_result} ') | |
if (new_jenkins_result): | |
self.screen.configure(state='normal') | |
self.screen.insert('1.0', 'new customer dowloaded' + '\n') | |
self.screen.configure(state ='disabled') | |
self.get_customer() | |
if (str(self.load_cust['state']) == 'disabled' ): | |
self.load_cust.configure(state = 'normal') | |
def filter_jiras(self): | |
pp = ParentProcessor() | |
pp.get_local_parent() | |
pp.request_parent_data() | |
stp = SubtaskProcessor() | |
stp.get_subtask_fields() | |
stp.run_parse_subtasks() | |
def view_versions(self): | |
print('write db button pushed') | |
# vd = VersionDatabase() | |
# displayVersions = vd.write_db() | |
# #messagebox.showinfo("Version Map: ", displayVersions) | |
# # self.screen.configure(state='normal') | |
# # self.screen.insert(END, str(displayVersions) + '\n') | |
# # # record every value inserted in screen | |
# # self.screen.configure(state ='disabled') | |
# self.answer_label['text'] = 'read db' | |
# self.popup_message(displayVersions) | |
def popup_message(self, msg): | |
popup = tkinter.Tk() | |
popup.wm_title("!") | |
label = ttk.Label(popup, text=msg) | |
label.pack(side="top", fill="x", pady=10) | |
B1 = ttk.Button(popup, text="Okay", command = popup.destroy) | |
B1.pack() | |
popup.mainloop() | |
def init_gui(self): | |
self.root.title('RDOPS TOOL') | |
self.grid(column=0, row=0, sticky='nsew') | |
self.menubar = tkinter.Menu(self.root) | |
self.menu_file = tkinter.Menu(self.menubar) | |
self.menu_file.add_command(label='Exit', command=self.on_quit) | |
self.menu_edit = tkinter.Menu(self.menubar) | |
self.root.config(menu=self.menubar) | |
self.menubar.add_cascade(menu=self.menu_file, label='File') | |
self.menubar.add_cascade(menu=self.menu_edit, label='Edit') | |
ttk.Separator(self, orient='horizontal').grid(column=0, row=1, columnspan=4, sticky='ew') | |
####### | |
self.load_cust = ttk.Button(self, text='Load Customer', command=self.get_customer) | |
self.load_cust.grid(column=0, row=2, columnspan=4, sticky='nsew') | |
# NEW CUSTOMER BUTTON ROW = 3 | |
self.new_cust = ttk.Button(self, text='New Customer', command=self.get_new_jenkins) | |
self.new_cust.grid(column=0, row=3, columnspan=4, sticky='nsew') | |
# NEW DELETE BUTTON ROW = 4 | |
self.new_cust = ttk.Button(self, text='Delete Customer', command=self.delete_customer) | |
self.new_cust.grid(column=0, row=4, columnspan=4, sticky='nsew') | |
# TEXT BOX LOWER | ROW 5 | |
self.low_name_frame = ttk.LabelFrame(self, text='customer', height=100) | |
self.low_name_frame.grid(column=0, row=5, columnspan=4, sticky='nsew') | |
self.low_name_label = ttk.Label(self.low_name_frame, text='') | |
self.low_name_label.grid(column=0, row=0) | |
self.low_vers_frame = ttk.LabelFrame(self, text='current version', height=100) | |
self.low_vers_frame.grid(column=4, row=5, columnspan=4, sticky='nsew') | |
self.low_vers_label = ttk.Label(self.low_vers_frame, text='') | |
self.low_vers_label.grid(column=0, row=0) | |
# text box high | ROW 6 | |
self.high_name_frame = ttk.LabelFrame(self, text='upgrade target', height=100) | |
self.high_name_frame.grid(column=0, row=6, columnspan=4, sticky='nsew') | |
self.high_name_label = ttk.Label(self.high_name_frame, text='') | |
self.high_name_label.grid(column=0, row=0) | |
self.high_vers_frame = ttk.LabelFrame(self, text='upgrade version', height=100) | |
self.high_vers_frame.grid(column=4, row=6, columnspan=4, sticky='nsew') | |
self.high_vers_label = ttk.Label(self.high_vers_frame, text='') | |
self.high_vers_label.grid(column=0, row=0) | |
# ROW 7 | |
ttk.Separator(self, orient='horizontal').grid(column=0, row=7, columnspan=4, sticky='ew') | |
#ROW 8 | |
self.run_diff_1 = ttk.Button(self, text='Run Diff v1', command=self.filter_jiras) | |
self.run_diff_1.grid(column=0, row=8, columnspan=4, sticky='nsew') | |
# self.num1_entry = ttk.Entry(self, width=5) | |
# self.num1_entry.grid(column=1, row=2) | |
# self.num2_entry = ttk.Entry(self, width=5) | |
# self.num2_entry.grid(column=3, row=2) | |
# self.db_button = ttk.Button(self, text='View Version Table', command=self.view_versions) | |
# self.db_button.grid(column=0, row=5, columnspan=4) | |
# self.answer_frame = ttk.LabelFrame(self, text='answer', height=100) | |
# self.answer_frame.grid(column=0, row=6, columnspan=5, sticky='nsew') | |
# self.answer_label = ttk.Label(self.answer_frame, text='') | |
# self.answer_label.grid(column=0, row=0) | |
self.screen = Text(root, state='disabled', width=35, height=3,background="#33F3FF", foreground="blue") | |
#self.screen = Text(root, state='disabled',background="#33F3FF", foreground="blue") | |
#self.screen.grid(column=0, row=1, columnspan=4, sticky='nsew') | |
self.screen.grid() | |
ttk.Label(self, text='Customer').grid(column=0, row=0, columnspan=4) | |
# ttk.Label(self, text='number one').grid(column=0, row=2, sticky='w') | |
# ttk.Label(self, text='number two').grid(column=2, row=2, sticky='w') | |
for child in self.winfo_children(): | |
child.grid_configure(padx=5, pady=5) | |
if __name__=='__main__': | |
root = tkinter.Tk() | |
root.geometry("300x375") | |
RdopsTool(root) | |
root.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment