Я относительно новичок в Python и TKINTER. Я хотел спросить, есть ли способ изменить отображение этого кода, потому что каждый раз, когда я пытаюсь использовать «липкий» или строку, он показывает только одно из полей ввода. приветствуется любая помощь.
Попытка изменить код с помощью столбца, строки, закрепления, но безрезультатно.
import sys
from tkinter import *
import matplotlib
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figure
import numpy as np
import matplotlib.animation as animation
fig=matplotlib.figure.Figure()
class GraphPlotter:
def __init__(self, parent):
# remember parent
self.parent = parent
def graphdis(self):
f = Figure(figsize=(5,5))
a = f.add_subplot(111)
x=np.arange (0, (4*np.pi), .1)
def animate(i):
line.set_ydata(np.sin(fr*(x+i/10.0)))
return line,
ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), interval=25, blit=False)
canvas = FigureCanvasTkAgg(f, self.parent)
canvas.draw()
canvas.get_tk_widget().grid()
class GUIWindow:
def __init__(self):
root = Tk()
root.geometry('1200x650')
# ****** GUI buttons *********
label = Label(root,text="SHM Simulation").grid(column=0, row=0)
fig=matplotlib.figure.Figure()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().grid(column=0,row=2, sticky=W+N)
entry1= Entry(root, text='Frequency')
canvas.get_tk_widget().grid(row=1,column=0, sticky=W+N)
entry2= Entry(root, text='Duration')
canvas.get_tk_widget().grid(row=0,column=0, sticky=W+N)
entry2.grid()
def callback():
fr=int(entry1.get())
t=float(entry2.get())
p=pyaudio.Pyaudio
fs=44100
volume=.7
samples=(np.sin(fr*2*np.pi*np.arange(fs*t)/(fs).astype(np/float32)))
stream=p.open(format=pyaudio.paFloat32,
channels=1,
rate=fs,
output=True)
stream.write(volume*samples)
b1=Button(root, text='OK', command= callback).grid(sticky=N+W)
# use `root` as parent for canvas
graphGrab = GraphPlotter(root)
graphGrab.graphdis()
root.mainloop()
GUIWindow()
Нет сообщений об ошибках, просто выглядит как беспорядок.