запускать команды в разделенном фрейме в главном окне с помощью tkinter - PullRequest
1 голос
/ 29 мая 2020

Я новичок в tkinter и до сих пор построил это:

import tkinter as tk
import subprocess
import os


def maingui():

    window = tk.Tk()
    window.title("My first GUI")
    #window.state('zoomed')
    window.geometry("700x205")
    window.configure(bg="black")

    frame1 = tk.Frame(window, width=90, bg="orange")
    # frame1.pack(fill=tk.Y, side=tk.LEFT)
    frame1.grid(row=0, column=0)

    frame2 = tk.Frame(window, width=1890, bg="black")
    # frame2.pack(fill=tk.Y, side=tk.RIGHT)
    frame2.grid(row=0, column=1)

    lotomat = tk.Button(frame1, text="  Start\n   Lotomat", padx=10, pady=5, bg="orange", fg="black",
                        relief=tk.GROOVE, command=lambda : startLotomat())
    # lotomat.pack()
    lotomat.grid(row=1, column=0)

    convert = tk.Button(frame1, text="   URL2IP \n on \n   Desktop", padx=10, pady=5, bg="orange", fg="black",
                        relief=tk.GROOVE, command=lambda : startURL2IP())
    # convert.pack()
    convert.grid(row=2, column=0)

    startRps = tk.Button(frame1, text="    Start    \nR.P.S", padx=12, pady=5, bg="orange", fg="black",
                         relief=tk.GROOVE, command=lambda : startRPS())
    # startRps.pack()
    startRps.grid(row=3, column=0)

    endRun = tk.Button(frame1, text="Quit", padx=12, pady=10, bg="orange", fg="black",
                       relief=tk.RIDGE, command=lambda : ending())
    # endRun.pack()
    endRun.grid(row=4, column=0)

    def startLotomat():
        os.system('python lotomat.py')

    def startURL2IP():
        os.system('python urltoipondesktop.py')

    def startRPS():
        os.system('python rockpaperscissors.py')

    def ending():
        exit()

    window.mainloop()

maingui()

каждая кнопка запускает другой файл .py. как я могу использовать фреймы, чтобы разделить окно так, чтобы программа работала с правой стороны? Спасибо!

Редактировать: я добавил пи c из GUI, цель - запустить левые кнопки меню на черной рамке. enter image description here

1 Ответ

0 голосов
/ 08 июня 2020

После комментария acw1668 и большого количества исследований потоков, вот решение для потоков. так элегантно, так просто! Я люблю python!

def thread_handler(self, host):

    wt = threading.Thread(target=self.write_to_file, args=(host,))
    pt = threading.Thread(target=self.print_to_box, args=(host,))
    dt = threading.Thread(target=self.delete_default_lines, args=())

    wt.start()
    pt.start()
    dt.start()
...