Как нарисовать диаграмму сдвига и момента, используя python? (много ошибок) - PullRequest
0 голосов
/ 16 января 2020

Я очень новичок в python и Tkinter и matplotlib, но я хочу создать и GUI приложение, которое поможет мне нарисовать диаграмму сдвига и момента для моего промежуточного проекта. Используя Tkinter, вот что я сделал до сих пор (это все еще выполняется)

    import tkinter as tk
    from tkinter import *
    import os
    from beambending import Beam
    from beambending import DistributedLoadV, PointLoadH, PointLoadV, x



    ''' Functionality'''
    def run():
        addsupport = tk.Tk()
        addsupport.title("Choose the load")
        F= tk.Canvas(addsupport, height=150, width=300,bg="White")
        F.pack()

        rollersupport=tk.Button(addsupport, text="Roller Support", height = "2", width="10", padx=10,
                     pady=5, fg="Black", bg="yellow")
        rollersupport.place(x = 5, y = 5)

        pinsupport=tk.Button(addsupport, text="Pin Support",height = "2", width="10", padx=10,
                     pady=5, fg="Black", bg="yellow")
        pinsupport.place(x = 5, y = 50)


    def graph():

        graphm=tk.Tk()
        graphm.title("Result!")

        beam=Beam(10)
        beam.pinned_support ==2
        beam.rolling_support==7
        beam.add_loads((  
                        PointLoadV(-15, 3),
                        PointLoadV(-15, 4),
                        DistributedLoadV(-10, (4, 9)),  
                        DistributedLoadV(30 + x, (0, 3)),
                    ))

        return beam.plot()


    '''OS'''

    root = tk.Tk()
    root.title("Shear and Moment Diagram Calculator")
    operator=""

    canvas = tk.Canvas(root, height=400,width=500,bg="White")
    canvas.pack()

    frame=tk.Frame(root, bg="Light Blue")
    frame.place(relwidth=0.9,relheight=0.9, relx=0.05, rely=0.05)


    '''Bottuns'''

    result=tk.Button(frame, text="Result", font=('airal', 30 ,'bold'), height="1", width="6", padx=10,
                     pady=5, fg="Black", bg="yellow", command = graph)
    result.place(x=300 , y=305)


    add_support=tk.Button(frame, text="Add Support", height="2", width="10", padx=10,
                     pady=5, fg="Black", bg="yellow", command = run)
    add_support.place(x = 17, y = 310)


    add_load=tk.Button(frame, text="Add Load", height="2", width="10", padx=10,
                     pady=5, fg="Black", bg="yellow")
    add_load.place(x = 145, y = 310)

    root.mainloop()

Одна вещь состоит в том, что lib, которую я использую, "beambending", уже построил рисунок в библиотеке сам. Так есть ли способ, которым я могу импортировать эту фигуру в мою кнопку «Результат», не встречая много ошибок? У меня есть тонны учебных пособий, и я следую за ними, но я все еще не могу понять, как это сделать. (Ошибка возникает в def graph(): срабатывает при нажатии кнопки «Результат» в приложении GUI) Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...